-
引子:
在学习NLP for spamClassify中,需要处理很多spam,训练集/测试集= 41278/10320,在读取训练集文件id…txt,遇到过很多这种错误,文件名如下:
-
问题重现:
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
-
原因
显然就是以utf-8和gbk编码方式打不开这个文本,用vscode打开这个文本发现他的编码是ISO 8859-2(还有一些其他编码的文件也会报错,甚至utf-8、GB2312也会报错),另外关于ISO 8859这个编码可以参考:https://baike.baidu.com/item/ISO8859 -
解决方法
使用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
【成功解决】Python3:UnicodeDecodeError: ‘gbk‘ && ‘utf-8‘ codec can‘t decode byte 0xxx in position xx
最新推荐文章于 2023-07-26 20:41:02 发布