Python:csvをエクセルで開いた時の文字化け解決方法

Python:csvをエクセルで開いた時の文字化け解決方法

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)

実行結果

うまく文字化けせずにできました。

pythonカテゴリの最新記事