ホームページ > バックエンド開発 > Python チュートリアル > テキスト ファイルを反復処理すると、「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte」が発生するのはなぜですか?

テキスト ファイルを反復処理すると、「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte」が発生するのはなぜですか?

Patricia Arquette
リリース: 2024-11-04 13:35:01
オリジナル
1047 人が閲覧しました

Why am I getting a UnicodeDecodeError: 'utf-8' codec can't decode byte when iterating through a text file?

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート