UnicodeDecodeErrorが発生した場合の対応
下記のサンプルコードは、いずれもUnicodeDecodeErrorが発生します。
Shift-JIS形式のCSVファイルをpandasで読み込もうとするとunicode decode errorエラーが発生します。
import pandas as pd
data = pd.read_csv('../data/22_shizuoka_all_20210331.csv')
また、以下のコードでも同様のエラーが発生します。
import sys
for fn in sys.argv[1:]
try:
f = open(fn)
except FileNotFoundError:
print("{}というファイルは存在しません".format(fn))
else:
try:
print(fn, len(f.read()))
finally
f.close()
ファイルはそれぞれの文字コードで保存されています。
pythonで利用するには、pythonの文字コードに変換する必要があります。
ファイルとpythonの文字コードが異なり、文字コードを変換できないためエラーが発生しました。
Windowsのテキストファイルの文字コードは「cp932(shift-jis)」です。
pythonファイルの文字コードは「utf-8」です。
ファイルを読み込む際に、encodingを指定する必要があります。
Pandasで読み込む場合は、データグラムのencodingをshift-jisに設定します。
import pandas as pd
data = pd.read_csv('../data/22_shizuoka_all_20210331.csv', encoding="shift-jis")
Openメソッドでファイルを開く場合は、encodingをutf-8に指定して開きます。
import sys
for fn in sys.argv[1:]
try:
f = open(fn, encoding="utf-8")
except FileNotFoundError:
print("{}というファイルは存在しません".format(fn))
else:
try:
print(fn, len(f.read()))
finally
f.close()