Python泡菜错误:UnicodeDecodeError


93

我正在尝试使用Textblob进行一些文本分类。我首先训练模型并使用pickle对其进行序列化,如下所示。

import pickle
from textblob.classifiers import NaiveBayesClassifier

with open('sample.csv', 'r') as fp:
     cl = NaiveBayesClassifier(fp, format="csv")

f = open('sample_classifier.pickle', 'wb')
pickle.dump(cl, f)
f.close()

当我尝试运行此文件时:

import pickle
f = open('sample_classifier.pickle', encoding="utf8")
cl = pickle.load(f)    
f.close()

我收到此错误:

UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0x80:无效的起始字节

以下是我的sample.csv的内容:

我的SQL根本无法正常工作。这是一个错误的选择,SQL

我有问题。请立即回复,支持

我在哪里错了?请帮忙。


Answers:


152

通过选择open模式下的文件wb,您选择以原始二进制文件编写。没有应用字符编码。

因此,要读取此文件,您只需open在mode下rb


wb保存泡菜时有使用理由吗?还是有一种模式可以用来保存泡菜,而无需用rb模式打开它?
桑多

1
我使用@tsando,wb因为尚未解决的某些问题阻止我将其w与泡菜一起使用。它抱怨写字节而不是字符串。
Gigaflop '18年

谢谢...您救了我的一天
Kumar KS

27

我认为您应该以以下方式打开文件

f = open('sample_classifier.pickle', 'rb')
cl = pickle.load(f)   

您不必解码它。 pickle.load将为您提供保存内容的精确副本。此时,您应该可以cl像刚刚创建它一样使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.