Python:UnicodeDecode错误:'utf8'编解码器无法解码字节



我正在将一堆RTF文件读入python字符串。在某些文本上,我收到此错误:

Traceback (most recent call last):
  File "11.08.py", line 47, in <module>
    X = vectorizer.fit_transform(texts)
  File "C:Python27libsite-packagessklearnfeature_extractiontext.py", line
716, in fit_transform
    X = super(TfidfVectorizer, self).fit_transform(raw_documents)
  File "C:Python27libsite-packagessklearnfeature_extractiontext.py", line
398, in fit_transform
    term_count_current = Counter(analyze(doc))
  File "C:Python27libsite-packagessklearnfeature_extractiontext.py", line
313, in <lambda>
    tokenize(preprocess(self.decode(doc))), stop_words)
  File "C:Python27libsite-packagessklearnfeature_extractiontext.py", line
224, in decode
    doc = doc.decode(self.charset, self.charset_error)
  File "C:Python27libencodingsutf_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

我试过:

  1. 将文件文本复制并粘贴到新文件中
  2. 将 RTF 文件另存为 TXT 文件
  3. 在记事本++中打开txt文件并选择"转换为utf-8"并将编码设置为utf-8
  4. 使用 Microsoft Word 打开文件并将其另存为新文件

什么都没用。有什么想法吗?

它可能不相关,但这是代码,以防您想知道:

f = open(dir+location, "r")
doc = Rtf15Reader.read(f)
t = PlaintextWriter.write(doc).getvalue()
texts.append(t)
f.close()
vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words='english')
X = vectorizer.fit_transform(texts)     

这将解决您的问题:

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_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')

编码="拉丁-1"对我有用。

相关内容

  • 没有找到相关文章

最新更新