[Python_Pandas] csvを読み込むときのUnicodeDecodeError:解決方法

Python
スポンサーリンク

こんにちは~

Pythonでエクセルやcsvを自動で編集できたら仕事が楽になると思うので、色々プログラムを作成しています。

その中で発生したエラーの解決方法をメモを残します。

今回は↓のエラーについてです。

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe1 in position 7: illegal multibyte sequence

この記事が誰かの役に立ったら幸いです。

スポンサーリンク

エラーが発生したコード

まず最初エラーが発生したコードを載せます。

import pandas as pd

df = pd.read_csv('./test.csv')
print(df)

test.csvを読み込んで出力するだけの簡単なスクリプトです。

test.csvの中身は↓です。

この状態でスクリプトを実行すると

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe1 in position 7: illegal multibyte sequence

とエラーが発生してしまいます。

encoding=’shift-jis’

ググってみると、

encoding=’shift-jis’

のタグをつけた方よいと書いてあったので、コードを修正します。

import pandas as pd

df = pd.read_csv('./test.csv', encoding='shift-jis')
print(df)

これでスクリプトを実行すると

UnicodeDecodeError: ‘shift_jis’ codec can’t decode byte 0xe1 in position 7: illegal multibyte sequence

クソ、UnicodeDecodeError:が消えていませんでした。

csvファイルのバグ

ググりまくること2時間、encodingを定義する以外に解決方法がでてきません・・・

これはもうcsv側がバグっていると思い、csv側を変更しました。

Sheetが3つあったので、1つにします。

ファイルの形式をcsvに指定して保存します。

結果・・・

無事csvを読み込むことができました。

最終的なコード

import pandas as pd

df = pd.read_csv('./test3.csv', encoding='shift-jis')
print(df)

まとめ

csvの問題でもUnicodeDecodeErrorが発生することが分かりました。
(エクセルの拡張子をcsvに変えただけの処理だったのが良くなかったみたいです)

これに気が付くのに2時間くらいかかりました。
プログラムエラーが発生したとき、原因はプログラムだけではないということですね・・・

今後に生かしたいと思います。

ではまた!

コメント

タイトルとURLをコピーしました