「for line in...」イテレータによる UnicodeDecodeError のトラブルシューティング
テキスト ファイルを扱うとき、開発者はよく「for line」のようなイテレータを使用します。 in...」を使用して、ファイルの各行を読み取って処理します。ただし、これによってイライラする UnicodeDecodeError が発生する場合があります。
問題:
次のコードを考慮してください:
<code class="python">for line in open('u.item'): # Read each line</code>
上記のコードを実行するとき場合、次のエラーが発生する場合があります:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
このエラーは、Python が UTF-8 エンコーディングを使用してファイル内のバイトを解釈しようとしたときに、UTF-8 標準に準拠していないバイトが見つかった場合に発生します。 .
解決策:
この問題の解決策は、ファイルの正しいエンコーディングを決定することです。この場合、ファイルは ISO-8859-1 でエンコードされます。これは、UTF-8 とは異なる文字エンコード スキームです。
エラーを修正するには、ファイルを開くときにエンコードを指定します。
<code class="python">for line in open('u.item', encoding='ISO-8859-1'): # Read each line</code>
デフォルトのエンコーディング「utf-8」を「ISO-8859-1」に置き換えることで、ファイル内のバイトをデコードするために正しい文字エンコーディングが使用され、UnicodeDecodeError が解決されます。
以上がテキスト ファイルを反復処理するときに UnicodeDecodeError を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。