Pythonで実行結果をcsv(※)に書き込んでエクセルで開くような処理を行う事がありますよね。
その時に、文字化けした経験はありませんか?
私は、文字化けと表示ズレが大嫌いです。・・・あとパクチーも。
そこで今回は、pythonで作ったcsvファイルをエクセルで開く時に文字化けになるトラブルを防ぐ方法をご紹介します。
(※)csvとは
Comma Separated Valuesの頭文字をとってcsv。テキストデータを各フィールドで分けるためにカンマで区切ったデータ形式です。
エクセルで開いた時に起こるcsv文字化けの解決方法
今回の文字化けの対処は、あくまでエクセルで開いた時の文字化けを防ぐ方法です。
文字化けの原因は、ズバリ文字コードの問題です。
エクセルで正しく開ける文字コードを指定すれば解決します。
解決方法
- 文字コード:UTF-16(BOMありUTF-16 LE)
- 区切りをタブ区切りにする
pythonでcsvを作成した時のデフォルト文字コードは「utf-8」です。
MicrosoftExcelは「BOMありUTF-16 LE」なので、文字コードの違いから文字化けが起こるので、csv「utf-16」に変更します。
実際のコード
import csv
rows = [['うまい棒の種類','価格','採点'], ['チーズ味', '10円', '最高'], ['明太子味', '10円', '最高'], ['コーンポタージュ味', '10円', '普通']]
with open('excel_umaibo.csv', 'w', newline='', encoding='utf-16') as f:
w = csv.writer(f, dialect='excel-tab', quoting=csv.QUOTE_ALL)
w.writerows(rows)
実行結果
うまく文字化けせずにできました。