Python 使用“错误”;nltk.word“u tokenize()”;功能
我正在尝试标记twitter文本。 当我将函数nltk.word_tokenize()应用于每个twitter文本时,即使对于一些非常丑陋的文本,例如 “\xd8\xb3\xd8\xa3\xd9\x87\xd9\x8e\xd9\x85\xd9\x90\xd8\xb3\xd9\x8f”,Python 使用“错误”;nltk.word“u tokenize()”;功能,python,twitter,nlp,nltk,tokenize,Python,Twitter,Nlp,Nltk,Tokenize,我正在尝试标记twitter文本。 当我将函数nltk.word_tokenize()应用于每个twitter文本时,即使对于一些非常丑陋的文本,例如 “\xd8\xb3\xd8\xa3\xd9\x87\xd9\x8e\xd9\x85\xd9\x90\xd8\xb3\xd9\x8f”, “\xd9\x82\xd9\x90\xd8\xb5\xd9\x8e\xd9\x91\xd8\xa9\xd9\x8b”, “\xd8\xad\xd8\xaa\xd9\x89” 但是当我在一个文件中循环浏览所有twi
“\xd9\x82\xd9\x90\xd8\xb5\xd9\x8e\xd9\x91\xd8\xa9\xd9\x8b”, “\xd8\xad\xd8\xaa\xd9\x89” 但是当我在一个文件中循环浏览所有twitter时
tokens = []
for i in range(0,5047591):
s = ','.join(l_of_l[i])
tokens += nltk.word_tokenize(s)
它返回错误,例如:
UnicodeDecodeError:“ascii”编解码器无法解码位置2:序号不在范围(128)文件中的字节0xc3
“/Library/Python/2.7/site packages/nltk/tokenize/punkt.py”,第1304行,
在(u)中重新对齐(u)边界
对于sl1、sl2成对iter(切片):
还有更多
关于如何修复它有什么建议吗?您遇到的问题不是来自您包含的代码,而是来自包含
open()
命令的代码。脚本可以很好地打开文件,但是当您访问数据时,它会给您回溯
import codecs
...
with codecs.open('file.csv','r',encoding='utf8') as f:
text = f.read()
谢谢我改为使用了f.readline(),但出现了以下错误“UnicodeDecodeError:'utf8'编解码器无法解码位置1中的字节0x8b:无效的开始字节”,我不太确定该如何处理第二个错误有两种可能的解决方案。1) 将该行更改为
,使用codecs.open('file.csv','r',encoding='utf-8',errors='ignore')作为f:
,但可能会丢失一些字符。2) 确定您正在处理的编码类型,然后执行解码('.'.'.'.'.'.'.'.'.'.'.'.''.'编码('utf-8')
)。使用.decode('cp1252')
是很常见的,但请注意,这并不保证是正确的。是的,你是对的,当我使用errors='ignore',我从文件构建的列表变成了“索引超出范围”,但decode()。声明没有解决,我想知道我的pycharm可能存在一些设置问题,因为有时候我甚至无法安装一些模块。这可能对pycharm有帮助,既然你提到了它。转到文件>设置>编辑器>文件编码,然后将“IDE编码”、“项目编码”和(底部)“属性文件的默认编码”更改为“UTF-8”。去掉errors='ignore'
,然后再次运行脚本。我还没有测试过它,但是你也可以删除编解码器。再一次,问题是它对pycharm有特殊的好处。