ホームページ >バックエンド開発 >Python チュートリアル >テキスト ファイルを反復処理すると、「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte」が発生するのはなぜですか?
「for line in...」を実行しようとすると、UnicodeDecodeError: 'utf-8' Codec Can't Decode Byte
が発生します「for line in open('filename')」構文を使用してテキスト ファイルの行を反復処理すると、プログラマは、「utf-8」コーデックが特定のバイトをデコードできないことを示す UnicodeDecodeError に遭遇する可能性があります。このエラーは通常、テキスト ファイルのエンコードが「utf-8」コーデックで想定されているエンコードと一致しない場合に発生します。
問題の解決
これを解決するにはエラーが発生した場合は、テキスト ファイルを開くときに、そのファイルの正しいエンコーディングを指定する必要があります。これは、以下に示すように、open() 関数に「encoding=」パラメータを追加することで実現できます。
<code class="python">for line in open('filename', encoding='utf-8'): # Read each line</code>
場合によっては、指定されたエンコーディングが正しくない可能性があり、同じエラーが発生します。適切なエンコーディングを決定するために、プログラマはテキスト ファイルを調べて、使用されている文字セットを特定できます。
例として、質問者が提供したコード スニペットは次のとおりです。
<code class="python">for line in open('u.item'): # Read each line</code>
エンコードが誤って「utf-8」であると想定されたためです。テキスト ファイルを検査すると、正しいエンコードは「ISO-8859-1」であることがわかりました。次のようにコードを変更すると、問題が解決されました:
<code class="python">for line in open('u.item', encoding='ISO-8859-1'): # Read each line</code>
以上がテキスト ファイルを反復処理すると、「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。