python3报错解决办法:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multib

在学习机器学习实战这本书的时候,编译书本上的程序时出现了很多的错误,现总结一下书本第66页的错误

wordList=textparse(open('email/ham/%d.txt' %i).read()

出现错误:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
网上百度错误原因:
[python]  view plain  copy
  1. <pre name="code" class="python">        wordList = textParse(open('email/ham/%d.txt' % i).read())  


 
  

在python3中读取文件时报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence

网上各种资料大都显示是文件编码问题,所以就把utf-8,gbk,asicc等各种编码方式都试了一遍,还是没有解决问题。

然后仔细看报错信息,根据decode byte 0xae in position 199看出来好像是文件中某个字节不能解码,问题出来了,文件中包含了非法字符。

打开文件一看,第二行中夹杂着“�”字符,这个字符本来是个普通问好“?”不知道什么原因放入eclipse后就变了,删除之后,一切就正常啦。


但是找了好久都没有发现“�”字符,又百度发现解决办法如下:

解决办法:打开email\ham\23.txt,找到SciFinance?,把?替换成空格即可。



但是然后又出现错误:


扫描二维码关注公众号,回复: 864736 查看本文章

del(trainingSet[randIndex])


TypeError: 'range' object doesn't support item deletion


出现错误行为: del(trainingSet[randIndex])

原因是python3中range不返回数组对象,而是返回range对象  


更改:


trainingSet = range(50);替换为trainingSet = list(range(50));  

猜你喜欢

转载自blog.csdn.net/yu1150/article/details/78432502