python使用csv庫寫unicode字符到文件會拋出unicode轉換異常,比如在stackoverflow上就有哥們遇到過這樣的
UnicodeEncodeError: 'ascii' codec can't encode character u'\xef' in position 0: ordinal not in range(128)
后面的解決方法很多,比如使用pip上的另一個csv模塊,但是要額外安裝很蛋疼。
問題的關鍵在于打開python2.7打開文件默認是ascii的,所以寫入的時候有問題。直接用codecs以utf-8格式打開一個文件,再寫入即可:
import codecs
with codecs.open(filename, "wb", "utf-8") as file:
writer = csv.DictWriter(file, fieldnames=header)
writer.writeheader()
for row in rows:
writer.writerow(row)