'utf-8' codec can't decode byte 0x92 in position 880: invalid start
buptygz opened this issue · 6 comments
博主你好,在clone你的关于贝叶斯进行垃圾邮件分类的代码时,运行发现python3对文件的解码方式与python2有所不同,会爆出题目所示的错误。我在网上搜了,刚入门python不久,没有找到正确的解决方法。希望楼主赐教?具体报错地方在bayes-modify.py文件的191和195行。
这个我也不知道,没有用过python2。你找下python2的机器学习实战代码,这个很多的。
好吧,我的意思是你的代码在python3下会报错,可能python2不会报错
@buptygz 呃....我测试了下,运行没有问题啊?你重新复制粘贴下数据看一看。
博主你好,在clone你的关于贝叶斯进行垃圾邮件分类的代码时,运行发现python3对文件的解码方式与python2有所不同,会爆出题目所示的错误。我在网上搜了,刚入门python不久,没有找到正确的解决方法。希望楼主赐教?具体报错地方在bayes-modify.py文件的191和195行。
请问你的问题解决了吗,我今天也是这个报错了UnicodeDecodeError: 'utf-8' codec can't decode byte 0x92 in position 880: invalid start byte打开文件的那一行wordList = textParse(open('email/ham/%d.txt' % i, 'r').read()) # 读取每个非垃圾邮件,并字符串转换成字符串列表
我之前遇到过类似的问题 你改成这样试试textParse(open('email/ham/%d.txt' % i, 'r',encoding='utf-8').read())
我之前遇到过类似的问题 你改成这样试试textParse(open('email/ham/%d.txt' % i, 'r',encoding='utf-8').read())
thank you,刚刚已解决了,改成了textParse(open('email/spam/%d.txt' % i, 'r', encoding='ISO-8859-1').read()) ,且把listOfTokens = re.split(r'\W*', bigString)改成了listOfTokens = re.split(r'\W+', bigString)就成功输出了。