记一次中文写入csv文件出现的问题

本文详细介绍了在Python中使用csv模块写入中文数据至CSV文件时遇到的乱码问题及解决方案,通过调整文件打开方式和编码设置,最终实现了正确写入。

首先,我想在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

至于为什么这样,还需要进一步去学习。如果有知道的也可以评论一下告知。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值