在这里插入图片描述

错误的意思是:Unicode的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。“illegal multibyte sequence”意思是非法的多字节序列,即没法(解码)了。

出现这种问题的原因时,需要处理的字符串本身不是gbk编码,但是又使用gbk编码。比如,我们的字符串本身是utf-8的,但是却用gbk去解码utf-8的字符串,所以结果必然出错。

通过查询部分回答提供了两种解决方案。

  • 1.使用open(‘order.txt’,‘r’, encoding=‘UTF-8’),用UTF-8解码
    或者是文本中出现的一些特殊符号超出了gbk的编码范围,可以选择编码范围更广的‘gb18030’

  • 2.通过改变读取方式open(‘order.txt’,‘rb’),(不建议这样使用)
    这种方法是采用二进制的读取方式,这样会造成数据中存在很多换行符\n,与实际的文本无关,即使通过.split()去除,其作用也不大。

  • 3.如果我们更改编码方式,依然不起作用(文中出现了’gb18030’也无法编码的字符),那我们可以使用‘ignore’属性忽略非法字符。(推荐使用)

open(path, encoding='gb18030', errors='ignore')
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐