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)