问题

最近处理数据时需要将txt文件转化成csv格式,txt中正常存储显示的中文在写入到csv文件时变成了乱码,文件的编码未能正确处理中文,需要在写入csv文件时指定编码。
解决方法

csvfile = file('data.csv', 'wb')
# Display chinese correctly
csvfile.write(codecs.BOM_UTF8)
spamwriter = csv.writer(csvfile)z

关键的一句话就是csvfile.write(codecs.BOM_UTF8),能够正常显示中文。

以下这种方式只支持python3:

with open(filename, 'a', newline='', encoding='utf-8-sig') as f: # 中文需要设置成utf-8格式
f_csv = csv.writer(f)
f_csv.writerow(('城市', '日期', '天气', '风力', '温度', '摄氏度')) # 头部信息
f_csv.writerows(data)