今回は Python で特定の文字コードの CSV をデコードしながら読み込む方法をご紹介したいと思います。
標準ライブラリの csv を使う場合は、セル単位に切り離したときに decode するとよいかと思います。ファイル名と文字コードを指定すると内容を抽出してくれるヘルパー関数を書いてみます。
import csv
def csv_read(filename, encoding):
"""CSV ファイルを文字コードを指定して読み込む
"""
with open(filename, "rb") as f:
csvfile = csv.reader(f)
rows = [[c.decode(encoding) for c in r] for r in csvfile]
return rows
if __name__ == "__main__":
# 確認
csv_filename = "target.csv"
encoding = 'sjis'
csv_rows = csv_read(csv_filename, encoding)
ファイルサイズがものすごく大きな場合などにはそれなりの工夫が必要かと思いますが、通常のサイズの CSV ならこれで十分かと思います。