Pythonでファイルを開く際、特にWindowsで作成されたShift-JIS(cp932)エンコーディングのファイルを開く場合、エンコーディングの問題に直面することがあります。

エラーの原因

UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 2407: illegal multibyte sequenceというエラーは、指定されたエンコーディングに基づいてバイト列を文字列にデコードしようとしたときに、不正なマルチバイトシーケンスが見つかったことを意味します。このエラーは、実際のファイルの文字コードと読み込み時に指定した文字コードが異なっているときに表示されます。

解決方法

CSVファイル内の文字列データがUTF-8エンコードされている可能性が高いです。その場合、encodingutf-8 に指定すると解決します。

csv_encoding = "utf-8" # エンコーディングを指定
data = pd.read_csv(csv_file_path, encoding=csv_encoding)

また、JSONファイルをPythonで読み込む際にも同様のエラーが発生することがあります。その場合も、encoding="utf-8"を指定してファイルを開くことでエラーを回避できます。

import json
with open('./data.json', 'r', encoding = "utf-8") as f:
    data = json.load(f)
print(data)

以上のように、Pythonでcp932エンコーディングを扱う際には、エンコーディングの違いに注意が必要です。特に、Windows環境で作成されたCSVファイルをUNIX系環境やMac環境で扱う際には、エンコーディングの違いに注意する必要があります。

投稿者 admin

コメントを残す

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