2015-10-05 50 views
27

我正在嘗試使用Textblob做一些文本分類。我首先使用pickle來訓練模型並序列化它,如下所示。Python pickle error:UnicodeDecodeError

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' codec can't decode byte 0x80 in position 0: invalid start byte

以下是我sample.csv的內容:

My SQL is not working correctly at all. This was a wrong choice, SQL

I've issues. Please respond immediately, Support

我在哪裏錯了?請幫忙。

回答

44

通過選擇open模式wb中的文件,您選擇使用原始二進制文件編寫。沒有應用字符編碼。

因此要閱讀本文件,您應該只需open模式rb

+0

非常感謝!完全合作! – 90abyss

11

我想你應該打開該文件作爲

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

你不應該對其進行解碼。 pickle.load會爲您提供您保存的任何內容的完整副本。此時,您應該能夠像cl一樣使用,就好像剛創建它一樣。