【Python-ERROR】‘gbk‘ codec can‘t encode character ‘\xa0‘ or ‘\u2003‘ in position XXX

Python在print输出时解码报错

1. 遇到的错误

在通过Python爬取网页时,通过print函数输出内容进行调试,但是总会遇到解码不了的字符,试过各种方法都不行,错误代码如下:

‘gbk’ codec can’t encode character ‘\xa0’ in position 8186: illegal multibyte sequence
‘gbk’ codec can’t encode character ‘\u2003’ in position 7254: illegal multibyte sequence

2. 解决办法

1. 提取的信息中有“\xa0”,并且无法去掉,查阅了相关资料,后发现该字符表示空格。

\xa0 是不间断空白符  
我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表空白符nbsp(non-breaking space)。latin1 字符集向下兼容 ASCII ( 0x20~0x7e )。

可以利用translate方法、split()解决,并且还可以替换\t \n字符,以split()为例:

>>> s
'T-shirt\xa0\xa0短袖圆领衫,体恤衫\xa0'
>>> out = "".join(s.split())
>>> out
'T-shirt短袖圆领衫,体恤衫'

2. 提取信息中有’\u2003’,在代码开头加上下面的代码也可以解决:

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

3. 当然还有就是可以把print注释掉,但是注释了调试的时候不方便。

3. 参考文章

https://blog.csdn.net/wangbowj123/article/details/78061618
https://blog.csdn.net/qq_39241986/article/details/87896088
https://blog.csdn.net/a_xixi/article/details/88030830

猜你喜欢

转载自blog.csdn.net/Artificial_idiots/article/details/121474878