首先,我想在csv文件中写入中文,但是用excel打开却出现了乱码。于是在网上查了许多资料,最后自己才试成功。
首先
>>> datas = ['谨言','慎行','脚踏实地']
>>> with open('csv_test.csv','wb') as f:
f.write(codecs.BOM_UTF8)
writer = csv.writer(f)
writer.writerow(datas)
3
Traceback (most recent call last):
File "<pyshell#10>", line 4, in <module>
writer.writerow(datas)
TypeError: a bytes-like object is required, not 'str'
于是我将'wb'改成'w',又出现了其他问题:
>>> with open('csv_test.csv','w') as f:
f.write(codecs.BOM_UTF8)
writer = csv.writer(f)
writer.writerow(datas)
Traceback (most recent call last):
File "<pyshell#14>", line 2, in <module>
f.write(codecs.BOM_UTF8)
TypeError: write() argument must be str, not bytes
然后在网上查到资料后却出现了两种互相矛盾的答案,一种是需要将’w'改为'wb',一种是需要将'wb'改为'w'
最后终于让我给试出来了:
>>> with open('csv_test.csv','w',encoding='utf-8') as f:
f.write(codecs.BOM_UTF8.decode())
writer = csv.writer(f)
writer.writerow(datas)
1
12
至于为什么这样,还需要进一步去学习。如果有知道的也可以评论一下告知。
本文详细介绍了在Python中使用csv模块写入中文数据至CSV文件时遇到的乱码问题及解决方案,通过调整文件打开方式和编码设置,最终实现了正确写入。





