こんにちは~
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時間くらいかかりました。
プログラムエラーが発生したとき、原因はプログラムだけではないということですね・・・
今後に生かしたいと思います。
ではまた!
コメント