web-dev-qa-db-ja.com

Python3でのUnicodeDecodeError

私は現在、非常に大きな.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は間違ったエンコーディングですか?もしそうなら、どうすればどちらが正しいかを知ることができますか?

よろしくお願いします!

6
EliteKaffee

無効なUTF-8のようですので、latin-1エンコーディングで読み取ってみてください。試してみてください

file = open('exampleFileName', 'r', encoding='latin-1') 
10
mic4ael

その場でエンコーディングを識別することはできません。したがって、私がコメントとして書いた方法を使用するか、(別の回答で提案されているように)同様の構造を使用しますが、これはワイルドショットです:

try:
    file = open("exampleFileName", "r")
except UnicodeDecodeError:
    try:
        file = open("exampleFileName", "r", encoding="latin2")
    except: #...

以下同様に、 Standard Python Encodings からすべてのエンコーディングをテストするまで。

ですから、この入れ子になった地獄を気にする必要はないと思います。file -bi [filename]一度、エンコーディングをコピーして、これを忘れてください。

UPD。実際、私は 別のstackoverflowの回答 を見つけましたWindows

0
user5164080