BETA

Python 3でファイル読み込み時のUnicodeDecodeErrorを回避する

投稿日:2018-11-09
最終更新:2018-11-09
※この記事は外部サイト(https://www.kumilog.net/entry/unicode-deco...)からのクロス投稿です

Pythonでファイルを読み込むときは以下のような処理でいけますが...

with open('file/to/path', 'r') as f:
    for line in f:
        line = line.strip()
        # つづきの処理

読み込んでいる途中で、utf-8ではない文字が含まれていると、UnicodeDecodeErrorが発生することがあります。for line in fの行で発生します。

大きなファイル、特にどこかからダウンロードしたファイルの場合、どの文字がutf-8ではないのか、特定することが難しいです。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 1024: invalid start byte

codecsモジュールを使うと、ファイルがutf-8であることを明示して、utf-8以外の文字が含まれていると、その行を無視して次の行を読み込みます。

import codecs

with codecs.open('file/to/path', 'r', 'utf-8', 'ignore') as f:
    for line in f:
        line = line.strip()
        # つづきの処理

pandasでの読み込みも同様に対処できます。

import codecs
import pandas as pd

with codecs.open('file/to/path', 'r', 'utf-8', 'ignore') as f:
    df = pd.read_csv(f)
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@xkumiyuの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!