【成功解决】Python3:UnicodeDecodeError: ‘gbk‘ && ‘utf-8‘ codec can‘t decode byte 0xxx in position xx

  1. 引子:
    在学习NLP for spamClassify中,需要处理很多spam,训练集/测试集= 41278/10320,在读取训练集文件id…txt,遇到过很多这种错误,文件名如下:
    在这里插入图片描述

  2. 问题重现:

    for line in open("../spam/train/1..txt", encoding='utf-8'):
        print(line)
        
    for line in open("../spam/train/1..txt", encoding='gbk'):
        print(line)
    

    以上代码都会出现出现报错信息:
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb7 in position 8: invalid start byte
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xed in position 120: illegal multibyte sequence

  3. 原因
    显然就是以utf-8和gbk编码方式打不开这个文本,用vscode打开这个文本发现他的编码是ISO 8859-2(还有一些其他编码的文件也会报错,甚至utf-8、GB2312也会报错),另外关于ISO 8859这个编码可以参考:https://baike.baidu.com/item/ISO8859

  4. 解决方法
    使用errors='ignore'参数即可,由于我的数据中含有大量中文,而且我需要提取中文信息,所以使用gbk编码方式

    for line in open("../spam/train/1..txt", encoding='gbk', errors='ignore'):
        if line != "":
            print(line)
    

    输出的部分信息截图如下:(中文正常读取)
    在这里插入图片描述

    码字不易~如有帮助点个赞呗~您的👍是对我最大的支持!
    更多可以参考一下:
    常见编码方式:https://blog.csdn.net/xiongchao2011/article/details/7276834
    Python编码方式:https://www.cnblogs.com/xuchunlin/p/8135613.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值