Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
68
Help us understand the problem. What are the problem?