数据存储在.csv文件乱码,数据写入才一部分就报错'gbk' codec can't encode character '\xee' in position 45: illegal multibyte

本文详细探讨了使用Python爬虫抓取数据并存储至CSV文件时遇到的编码问题,包括乱码及UnicodeEncodeError错误。文章提供了两种解决方案,一是通过添加ignore参数忽略无法编码的字符,二是采用GB18030编码,以覆盖GBK编码的局限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用python爬虫爬取规则数据后转化成来List格式,将其存储在.csv 文件中
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我们使用了decode和encode,试遍了各种编码,utf8,utf-8,gbk,gb2312等等,该有的编码都试遍了,可是编译的时 候仍然出现: UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position XXX。 崩溃了。

我遇到的问题:

1.使用open("xxxx.csv",'w',newline='',encoding='utf-8')把数据存储在csv文件后,能够全部存储,但是乱码了,猜测是编码集不匹配造成的

2.使用open("xxxx.csv",'w',newline='',encoding='gbk')把数据存储在csv文件后,只能存储list集合中前面几个数据,中途终止且报错UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX,猜测原因:数据中包含一些gbk无法显示的字符,导致报错说gbk无法编码。


【解决办法】
方案1:
在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。
对应代码为:
print myUnWebItems.encode(“GBK“, ‘ignore’);
方案2:
或者,因为gbk有显示不了的字符,那么使用GBK编码的超集GB18030 (即,GBK是GB18030的子集):


诸事顺利了


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值