テキストファイルの読み取り中にこのエラーが発生します。処理/無視して処理することは可能ですか?Python 3のreadlines()でのUnicodeエラー処理
UnicodeEncodeError: ‘charmap’ codec can’t decode byte 0x81 in position 7827: character maps to undefined.
テキストファイルの読み取り中にこのエラーが発生します。処理/無視して処理することは可能ですか?Python 3のreadlines()でのUnicodeエラー処理
UnicodeEncodeError: ‘charmap’ codec can’t decode byte 0x81 in position 7827: character maps to undefined.
でそれを包むことができio.TextIOWrapper
のサブクラスです。そうでない場合は、1つにまとめてください)。また、charmap
よりも可能性の高いエンコードを渡すことを検討してください(わからないときは、いつでもutf-8
を開始するのがよいでしょう)。例えば
:パイソン2で
f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
、read()
操作は、単にバイトを返します。トリックは、それらをデコードして文字列に変換します(実際には、バイトとは逆の文字が必要です)。単にそれらを無視する...
your_string.decode('utf-8', 'replace')
文字を未処理置き換えるために、または
your_string.decode('utf-8', 'ignore')
:あなたは、彼らの本当のエンコーディングのためのより良い推測を持っていない場合。 (utf-8
を推測するのではなく)の実数を見つけて使用することが好ましいと言われています。
マイナーニックピック:Python 2では、トリックはエンコーディングではなく、それらをデコードすることです。しかし、あなたが知っているのは、あなたが 'decode'メソッドを呼び出しているからです。 –
@ThomasKありがとう、固定。 –
「あのトリックは、それをエンコードしています...」 –
Yeah..youは(それがあると推定ファイル・オブジェクトの作成に関する(例えばerrors=ignore
又はerrors=replace
のような)適切なerrors=
値を渡し、パイソン3において
はい、UnicodeEncodeError – cobie
はいつかまえますが、それはファイルの残りの部分の読み方を説明する点ではあまり役に立ちません。 –
ファイルをコーデックで開き、ファイルがUTF8として解釈されるようにする必要があります。
import codecs fd = codecs.open(filename,'r',encoding='utf-8') data = fd.read()
これは、詳細に基づいて_lot_を変更します。 Python 2? Python 3?すでに読んだ文字列をデコードしようとしていますか?どうやって?等 –
Python 3.私はreadlines()を使用しています – Bob
OK - Python 3を指定する質問を更新しました。Unicodeは2と3の間に非常に大きな違いがある場所の1つです。将来明示的にバージョンを指定してください。 –