2017-01-18 12 views
0

私の.txtファイルを開いたときに私のPythonがそのような奇妙なパターンを表示する理由と、それを通常どおりに読み込むにはどうすればいいですか(私はPython 3.5を使用します)?つまり、私が持っているすべての文字の後に\ x00を取り除きたいのです。すべての文字の後のバイト。それらを取り除く方法

In: 
f = open(file_path, encoding="utf-8", errors="ignore") 
read_data = f.read() 
read_data[0:100] 

Out: 
'H\x00i\x00e\x00r\x00b\x00i\x00j\x00 \x00w\x00i\x00l\x00 \x00i\x00k\x00 \x00u\x00 \x00m\x00e\x00d\x00e\x00d\x00e\x00l\x00e\x00n\x00,\x00 \x00d\x00a\x00t\x00 \x00i\x00k\x00 \x00m\x00i\x00j\x00n\x00 \x00s\x00p\x00a\x00a\x00r\x00r\x00e\x00k\x00e\x00n\x00' 

私がメモ帳で開き、ファイルの例:

Hierbij wil ik u mededelen, dat ik mijn spaarrekening onder nummer __LARGENUMBER__ wil beëindigen.                   
Graag maak ik van de gelegenheid [... row continues]      
Hierbij verzoek ik u de volgende rekening op te [... row continues] 
+4

ファイルのエンコーディングはUTF-8(Windowsではデフォルト)ですが、あなたはUTF-8として開きます – Leon

+0

どのようなファイルエンコーディングはNotepad ++を使用していますか?あなたはPythonでそれを開くときに同じものを使うべきです。 – jonrsharpe

+1

[Python:Unicodeソースファイルの可能な複製は、文字間に空白(実際にはnullバイト)を追加]](http://stackoverflow.com/questions/20249832/python-unicode-source-file-adds-spaces-actually-null-bytes -between-characters) – tripleee

答えて

4

あなたのテキストが最も可能性が高いだけで使用してエンコードされていないUTF-8、多分UTF-16またはUCS-2 。つまり、それらのNULはすべて前に文字コードの一部になっています。それを確認するには、2番目のバイトを使用する文字(BOMまたはおそらくそのようなもの)が必要な場合があります。ファイルを読むときに、エンコードにutf_16_leを使用してみてください。

+0

UTF-16でした。ありがとう! –

関連する問題