Posted at

Python3 でファイルの文字コードを変換する

More than 3 years have passed since last update.

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