2017-09-05 84 views
4

我在使用Python 3.5.3在Windows上實現此notebook,並在load_vectors()呼叫。我試過不同的解決方案,但都沒有成功。Python 3 UnicodeDecodeError:'ascii'編解碼器無法解碼位置0中的字節0xe2:序號不在範圍內(128)

<ipython-input-86-dd4c123b0494> in load_vectors(loc) 
     1 def load_vectors(loc): 
     2  return (load_array(loc+'.dat'), 
----> 3   pickle.load(open(loc+'_words.pkl','rb')), 
     4   pickle.load(open(loc+'_idx.pkl','rb'))) 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) 

回答

1

你或許應該給予編碼pickle.load(f, encoding='latin1'),但請確保您的文件中的所有字符都將按照編碼。

默認情況下,你的pickle代碼試圖用'ASCII'解碼失敗的文件。相反,你可以明確地告訴使用哪一個。請參閱Documentation

如果latin1沒有解決,請嘗試encoding='bytes',然後解碼所有的鍵和值。

+0

我在使用csv時遇到了這個問題。你知道如何解決它嗎? –

+0

@radityagumay您可以在閱讀時嘗試編碼選項。你如何閱讀文件,文件中包含什麼內容? –

+0

只是想寫一個csv文件。和文件看起來像這樣https://paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk –

5

我通過將整個csv文件複製並粘貼到文本中來解決此問題,並執行下面的操作。這解決了我的問題。

 with open(self.path + "/review_collection.txt", "r", encoding="utf-8") as f: 
     read = f.read().splitlines() 
     for row in read: 
      print(row) 
相關問題