当前位置: 首页 > 面试题库 >

Python泡菜错误:UnicodeDecodeError

仇浩旷
2023-03-14
问题内容

我正在尝试使用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

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

我在哪里错了?请帮忙。


问题答案:

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

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



 类似资料:
  • 问题内容: 我一直在使用pickle感到非常高兴,然后我看到了这篇文章:不要为您的数据腌制 进一步阅读似乎是: 泡菜慢 泡菜不安全 泡菜不是人类可读的 泡菜不是与语言无关的 我已将数据保存为JSON,但我想了解最佳做法: 考虑到所有这些问题,您何时会使用泡菜?需要使用哪种特定情况? 问题答案: Pickle是不安全的,因为它通过调用任意函数来构造任意Python对象。但是,这也使它可以序列化几乎所

  • 问题内容: 我需要将一个键为类型且值为s 的小对象保存到磁盘 ,然后将其恢复 。像这样: 最佳选择是什么,为什么?使用或使用序列化它? 我正在使用Python 2.6。 问题答案: 如果您没有任何互操作性要求(例如,您将仅使用Python使用数据)并且二进制格式很好,请使用cPickle,它将为您提供真正快速的Python对象序列化。 如果您希望互操作性或想要一种文本格式来存储数据,请使用JSON

  • 问题内容: 我正在尝试从以下问题重新创建简单的泡菜图示例:保存交互式Matplotlib图,该图也源于使用Pickle保存Matplotlib图。但是,当我运行给定的代码时,这些数字似乎可以腌制,但是当我尝试加载该腌制的图形时出现错误。我正在使用Canopy Enthought(v1.6.2.3262),在Python 2.7.3-1上使用Matplotlib 1.5.1-1和Numpy 1.9.

  • Pandas中的应该是的替代品。 根据Pandas在MsgPack上的文档: 这是一种轻量级的可移植二进制格式,类似于二进制JSON,具有高度的空间效率,在写入(序列化)和读取(反序列化)方面都提供了良好的性能。 然而,我发现它的性能似乎无法与泡菜相提并论。 问题:除了pickle潜在的安全问题之外,msgpack比pickle有什么好处?pickle仍然是序列化数据的首选方法,还是目前存在更好的

  • 问题内容: 要学习tkinter,我正在制作一个简单的Go游戏程序。我现在希望能够使用泡菜保存游戏,但是当我尝试泡菜时,我得到: 我猜这是由于以下事实:尽管GUI和go board的模型被很好地分开了,但是该模型仍然具有对视图的引用以推送某些内容,因此pickle可能会尝试腌制一些tk的内容。当然,我只想对模型进行腌制,是否有任何方法可以使腌制不在乎对GUI的引用?还是解决该问题的另一种方法? 我

  • 问题内容: 我使用pickle在python 3上转储文件,并使用pickle在python 2上加载文件,出现ValueError。 那么,python 2 pickle无法加载python 3 pickle丢弃的文件吗? 如果我想要吗?怎么做? 问题答案: 您应该在Python 3中使用较低的协议编号来编写腌制的数据。Python3引入了一个带有该编号的新协议(并将其用作默认协议),因此切换回

  • 问题内容: 我创建了一些数据并将其存储了几次,如下所示: 每次文件大小增加,但是当我打开文件时 我只能看到上次的数据。如何正确读取文件? 问题答案: Pickle一次序列化一个对象,然后读回一个对象-腌制的数据按顺序记录在文件上。 如果您只是简单地这样做,则应该读取序列化到文件中的第一个对象(而不是您编写的最后一个对象)。 对第一个对象进行反序列化后,文件指针位于下一个对象的开头-如果您再次调用,

  • 嗨,我用冒泡排序查看了其他帖子,但解决方案在我的例子中不起作用:所以算法在我循环时重复了几次之后才起作用。但我如何在不使用输入的情况下做到这一点?这是我的代码,你知道我的意思: