pandasで作成したcsvを文字化けせずにExcelで開く
2022-02-05
pandasで作成したcsvをexcelで開こうとして、日本語が文字化けしたら、「utf_8_sig」というエンコードを指定しようというお話
(「utf_8」だと、Google Spredsheetなら問題ないが、Microsoft Excelだと文字化けしてしまう)
まずはpandasのインストール
% python -m pip install --upgrade pip % pip install pandas
適当に日本語のjsonファイルを用意する
(本来なら、APIで取得した結果だったりするのだろうが、今回は動作確認なので適当に自作)
% cat test.json [ { "name": "アリス", "gender": "女", "age": 30 }, { "name": "ヘレン", "gender": "女", "age": 25 }, { "name": "ジョン", "gender": "男", "age": 38 } ]
先程作成したjsonファイルを読み込み、csvに変換するpythonスクリプトを用意する
utf-8でエンコードしたファイルは「results_utf_8.csv」として吐き出し、
utf-8_sigでエンコードしたファイルは「results_utf_8_sig.csv」として吐き出すようにする
% cat json-to-csv.py import pandas as pd df = pd.read_json('test.json') df.to_csv('results_utf_8.csv', encoding='utf_8') df.to_csv('results_utf_8_sig.csv', encoding='utf_8_sig')
作成したスクリプトを実行する
% python json-to-csv.py
作業ディレクトリを確認すると、results_utf_8.csvとresults_utf_8_sig.csvのファイルができている
% ls json-to-csv-test/ json-to-csv.py results_utf_8.csv results_utf_8_sig.csv test.json
catで中身を確認するとどちらも同じに見えるが、
Excelで確認すると、results_utf_8.csvは文字化けしていて、results_utf_8_sig.csvは文字化けしていないことがわかる
% cat results_utf_8.csv ,name,gender,age 0,アリス,女,30 1,ヘレン,女,25 2,ジョン,男,38
% cat results_utf_8_sig.csv ,name,gender,age 0,アリス,女,30 1,ヘレン,女,25 2,ジョン,男,38
以上。