私は現在、非常に大きな.txtファイル(数百万行のテキスト)でいくつかの単純な正規表現を使用しようとしています。問題を引き起こす最も単純なコード:
file = open("exampleFileName", "r")
for line in file:
pass
エラーメッセージ:
Traceback (most recent call last):
File "example.py", line 34, in <module>
example()
File "example.py", line 16, in example
for line in file:
File "/usr/lib/python3.4/codecs.py", line 319, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 7332: invalid continuation byte
どうすればこれを修正できますか? utf-8は間違ったエンコーディングですか?もしそうなら、どうすればどちらが正しいかを知ることができますか?
よろしくお願いします!
無効なUTF-8のようですので、latin-1
エンコーディングで読み取ってみてください。試してみてください
file = open('exampleFileName', 'r', encoding='latin-1')
その場でエンコーディングを識別することはできません。したがって、私がコメントとして書いた方法を使用するか、(別の回答で提案されているように)同様の構造を使用しますが、これはワイルドショットです:
try:
file = open("exampleFileName", "r")
except UnicodeDecodeError:
try:
file = open("exampleFileName", "r", encoding="latin2")
except: #...
以下同様に、 Standard Python Encodings からすべてのエンコーディングをテストするまで。
ですから、この入れ子になった地獄を気にする必要はないと思います。file -bi [filename]
一度、エンコーディングをコピーして、これを忘れてください。
UPD。実際、私は 別のstackoverflowの回答 を見つけましたWindows。