RSS

Pythonとエンコーディング

    付与されたタグ:
  • Python

めんどくさいと思っていたことがPython3で解決。

import csv
import codecs
for i in csv.reader(codecs.open("foo.csv", "r", "cp932")): print(i)

このスクリプトをPython2で実行するとUnicodeEncodeErrorが出る。csv.reader()にunicodeを入れると駄目ということのようだ。codecs.openでなくて普通のfileで開くとエラーは出ないがShift JISでエンコードされたstrを意識して処理しないといけないのが面倒。

そこでPython3で実行すると問題なく通る。エンコーディング回りのPython2のつぎはぎ実装の悩みがあっさり解決するのはうれしい。