【发布时间】:2017-01-21 18:05:45
【问题描述】:
目标:我只想去掉逗号,因为它是唯一会搞砸我的(课程要求的)文件解析以进行贝叶斯分析的字符(即 word,2,4)而不是说(即 word,,2 ,4)
因此,我目前正在尝试阅读来自 Enron 公共在线语料库的文本文件形式的电子邮件,并构建贝叶斯垃圾邮件过滤器。
我注意到,在尝试操作存在的字符串时,读取某些文件会引发错误。我完全知道其中一些文件包含病毒,因此某些字符的编码可能无效。但是,我试图简单地替换字符串中的逗号,但出现以下错误:
UnicodeDecodeError:“ascii”编解码器无法解码位置 1169 中的字节 0xc1:序数不在范围内 (128)
我已经尝试了该论坛提供的所有内容,并且到处搜索解决方案,例如:
with open(file+file_path_stings[i],'r') as filehandle:
words = str(filehandle.read())
words = words.replace(',','')
words = words.split()
我也尝试过许多正则表达式尝试...这是其中一个版本:
with open(file+file_path_stings[i],'r') as filehandle:
words = str(filehandle.read())
words = re.sub(',','',words)
words = words.split()
现在,我可以简单地对只允许 A-Za-z 通过的版本进行正则表达式,但我注意到垃圾邮件的准确性受到许多垃圾邮件文件具有此类特殊字符的事实的严重影响。
任何建议将不胜感激。谢谢。
-罗伯特
【问题讨论】:
-
顺便说一句,我也尝试在 ascii 和 utf8 和 16 中进行编码和解码
-
你能完成堆栈跟踪吗?