プログラムの話しでっす。
結論
csvモジュールで書き込みする時は、unicode型はダメです。
str型で文字コードがUTF-8なもので統一しましょう。
サンプル
import csv
sample_header = [u"col{}".format(i) for i in range(1, 6)]
sample_data = [
[u"あ", u"い", u"う", u"え", u"お"]
]
with open('/tmp/sample.csv', "wb") as fh:
writer = csv.writer(fh, lineterminator=u'\n')
writer.writerow(sample_header)
for row in sample_data:
row = [x.encode("utf-8") for x in row]
writer.writerow(row)
ざっくり解説
元のデータがunicode型で渡ってきて(サンプルの sample_data
のように)
そのまま書き込もうとすると以下のようなExceptionを吐きます。
Traceback (most recent call last):
File "sample.py", line 14, in <module>
writer.writerow(row)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)
[Finished in 0.264s]
unicodeで渡ってきた時には .encode("utf-8")
すれば str型になるので csv モジュールもすんなり飲み込んでくれるようです。