Python3 でファイルの文字コードを変換する方法を2つ紹介します。
今回は文字コードが「shift-jis」の CSV ファイルがあり、それを「utf-8」に変換するコードを書いてみます。
動作環境
- Mac OS X 10.11.5
- Python 3.5.1
codecs を使って文字コードを変換する
codecs を使って文字コードを指定してファイルの読み書きができます。
utf8_test1.py
# -*- coding:utf-8 -*-
import codecs
def main():
# Shift_JIS ファイルのパス
shiftjis_csv_path = './download/shift_jis_data.csv'
# UTF-8 ファイルのパス
utf8_csv_path = './download/utf8_data.csv'
# 文字コードを utf-8 に変換して保存
fin = codecs.open(shiftjis_csv_path, "r", "shift_jis")
fout_utf = codecs.open(utf8_csv_path, "w", "utf-8")
for row in fin:
fout_utf.write(row)
fin.close()
fout_utf.close()
if __name__ == '__main__':
main()
nkf を使って文字コードを変換する
Python から nkf コマンド呼び出して文字コードの変換ができます。
utf8_test2.py
# -*- coding:utf-8 -*-
import subprocess
def main():
# Shift_JIS ファイルのパス
shiftjis_csv_path = './download/shift_jis_data.csv'
# UTF-8 ファイルのパス
utf8_csv_path = './download/utf8_data.csv'
cmd = "nkf -w %s > %s" % (shiftjis_csv_path, utf8_csv_path)
subprocess.call(cmd, shell=True)
if __name__ == '__main__':
main()
ただし、nkf は Python の機能ではありませんので、事前に nkf をインストールしておく必要があります。
$ brew install nkf