私は、ファイルから特殊文字(スペイン語で使用される)で文字列を読み込むプログラムを持っています。次に、chdirを使用して、その名前が文字列であるディレクトリに変更します。私はPythonのパスを変更するchdir
f=open("names.txt","r",encoding="utf-8")
names=f.readlines()
f.close()
を次のように私のpythonからそれを読むように、UTF-8でエンコードされたファイル以下
Tableta
Música
.
.
etc
を得ました「names.txt」と呼ばれるファイルで例えば
:そしてそれはすべて成功しprint(names)
出力読みません0
['Tableta\n','Música\n', ...etc]
私は(改行文字なしの最初の名「Tableta」、)最初のディレクトリに変更したいときに問題が発生し
chdir(names[0][:-1])
私は、次のエラー
FileNotFoundError: [WinError 2] The system cannot find the file specified: "\ufeffTableta"
を取得し、それは私には非常に奇妙であったファーストネームでのみ起こります。他の名前では、特殊文字を持っているかどうかにかかわらず、ディレクトリを変更することができます
「\ ufeff」余分な文字が追加されているため、エンコーディングで何かをしなければならないと思いました。だから、 "names.txt"ファイルをANSIコーディングに変更し、すべての特殊文字を削除して、Pythonでそれを読むことができました。しかし、私は特殊な文字を読むことができるようにutf-8コーディングでそのファイルを持つ必要があります。私がこれを解決できる方法はありますか?なぜPythonは '\ ufeff'文字を文字列に追加し、最初の名前だけを追加するのでしょうか?
ありがとうございました。ところで、BOMとは何ですか? –