“utf8”编码与列表文档内容

2024-07-05 11:14:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xba in position 1266: invalid start byte

在线

^{pr2}$

所以我试着把数据编码成这样:

self.data_train.data = unicode(self.data_train.data, "utf-8")

这就产生了错误:

TypeError: coercing to Unicode: need string or buffer, list found

在这里执行文本编码的正确方法是什么?在

代码段:

self.data_train = self.fetch_data(cache, subset='train')
if not os.path.exists(self.root_dir+"/autocreated/vectorizer.txt"):
    self.vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5,
                                     stop_words='english')
    start_time = time()
    print("Transforming the dataset")
    X_train = self.vectorizer.fit_transform(self.data_train.data)  // Error is here
    joblib.dump(self.vectorizer, self.root_dir+"/autocreated/vectorizer.txt")

Tags: selftxtdatatime错误dirtrainroot
1条回答
网友
1楼 · 发布于 2024-07-05 11:14:15

您将unicode应用于一个列表,但它只适用于单个字符串。在

self.data_train.data = [s.decode("utf-8") for s in self.data_train.data]

是正确的语法;但这将再次中断,因为字符串不是有效的UTF-8,正如scikit learn已经告诉过您的那样。在

您可以通过s.decode("utf-8", errors='ignore')decode忽略编码错误,或者让scikit learn处理以下问题更容易:

^{pr2}$

(尽管重新考虑输入是UTF-8的假设可能是个好主意;如果不是,这可能会对结果产生负面影响。)

相关问题 更多 >