search
LoginSignup
68
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
68
Help us understand the problem. What are the problem?