Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:UnicodeCodeError:';utf8';编解码器可以';t解码字节_Python_Encoding_Utf 8_Scikit Learn - Fatal编程技术网

Python:UnicodeCodeError:';utf8';编解码器可以';t解码字节

Python:UnicodeCodeError:';utf8';编解码器可以';t解码字节,python,encoding,utf-8,scikit-learn,Python,Encoding,Utf 8,Scikit Learn,我正在将一堆RTF文件读入python字符串。 在某些文本中,我会出现以下错误: Traceback (most recent call last): File "11.08.py", line 47, in <module> X = vectorizer.fit_transform(texts) File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line 716, in

我正在将一堆RTF文件读入python字符串。 在某些文本中,我会出现以下错误:

Traceback (most recent call last):
  File "11.08.py", line 47, in <module>
    X = vectorizer.fit_transform(texts)
  File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line
716, in fit_transform
    X = super(TfidfVectorizer, self).fit_transform(raw_documents)
  File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line
398, in fit_transform
    term_count_current = Counter(analyze(doc))
  File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line
313, in <lambda>
    tokenize(preprocess(self.decode(doc))), stop_words)
  File "C:\Python27\lib\site-packages\sklearn\feature_extraction\text.py", line
224, in decode
    doc = doc.decode(self.charset, self.charset_error)
  File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 462: invalid
 start byte

这将解决您的问题:

import codecs

f = codecs.open(dir+location, 'r', encoding='utf-8')
txt = f.read()
从那时起,txt就是unicode格式,您可以在代码中的任何地方使用它

如果要在处理后生成UTF-8文件,请执行以下操作:

f.write(txt.encode('utf-8'))

正如我在邮件列表中所说,使用
charset\u error
选项并将其设置为
ignore
可能是最简单的方法。 如果文件实际上是utf-16,还可以在矢量器中将字符集设置为utf-16。
请参阅。

您可以在json文件中转储csv文件行,而不会出现任何编码错误,如下所示:

json.dump(row,jsonfile, encoding="ISO-8859-1")
保持这条线:

vectorizer = TfidfVectorizer(encoding='latin-1',sublinear_tf=True, max_df=0.5, stop_words='english')

encoding='latin-1'适合我

试一下
X=vectorizer.fit_transform(text.encode('utf-8'))
,如果我没记错的话,我总是搞不清楚何时使用.encode()en.decode(),只要试一下,看看会发生什么……不起作用。我认为实际文件有问题。试试这个,但我不确定它是否有效。string=''.join([chr(ord(i))for i in string])新的open()返回:
Traceback(最近一次调用):文件“11.08.py”,第41行,在t=f.read()文件“C:\Python27\lib\codecs.py”中,第671行,在read return self.reader.read(size)文件“C:\Python27\lib\codecs.py”,第477行,在read newchars中,decodeddbytes=self.decode(数据,self.errors)UnicodeDecodeError:“utf8”编解码器无法解码1266位置的字节0x92:无效的起始字节
最好了解文档语料库的字符集,并将其显式传递给
TfidfVectorizer
类,以避免最终可能导致分类精度差的无声解码错误。
vectorizer = TfidfVectorizer(encoding='latin-1',sublinear_tf=True, max_df=0.5, stop_words='english')