爬虫写入csv文件的格式问题 ‘gbk‘ codec can‘t encode character ‘\u2705‘ in position与windows打开csv文件中文是乱码的解决方法

提示:本文将解决爬虫写入csv文件的格式问题与windows打开csv文件中文是乱码的问题


一、爬虫数据存入csv时报错:UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u2705’ in position 36: illegal multibyte sequence

写了一个爬虫程序,把数据存入csv文件

with open('./suqian_amazon.csv', 'w', newline='') as file:

运行报错如下:

Traceback (most recent call last):
  File "D:/code/PycharmProjects/amazon_store/amazon.py", line 508, in crawler
    store_information.get('店铺地址').encode('utf-8')
UnicodeEncodeError: 'gbk' codec can't encode character '\u2705' in position 36: illegal multibyte sequence

Process finished with exit code 1

原因是csv格式有问题,默认csv为gbk格式,但是gbk对于有些字段(如报错信息中的\u2705)无法进行编码
将源代码的文件打开方式改为用uft-8打开就不会报这个错了:

with open('./suqian_amazon.csv', 'w', newline='', encoding='utf-8') as file:

二、.csv用windows excel打开的时候全是乱码

原本以为按照上面那么做就没问题,但是当我把生成的.csv文件用excel打开时,却发现中文部分全是乱码:
在这里插入图片描述
对于这个问题,网上也有很多很多解决办法。因为windows默认是用gbk方式打开文件的,所以网上的解决办法主要集中在用excel设置打开文件的编码方式,操作复杂而且对我无效。
我认为最最简单的办法是,将原本csv的encoding模式由utf-8模式,修改为utf-8-sig,即增加一个签名。

 with open('./suqian_amazon.csv', 'w', newline='', encoding='utf-8-sig') as file:

UTF-8-sig(也称为UTF-8 with BOM)是UTF-8的一个变体,它在文本的开头添加了一个特殊的字节顺序标记(BOM)。BOM是一个Unicode字符(U+FEFF),它的目的是指示文本是以UTF-8编码保存的,并且指示字节顺序(大端或小端)。BOM可以帮助解析器在没有其他标识的情况下正确识别文本的编码。
给utf加一个标记,这样每次excel打开csv文件时就知道是uft-8编码了,从根本上解决了乱码问题。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值