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()

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

前の記事

イルミネーション