我正在使用Python 3.5.3在Windows上实现此notebook,并在load_vectors()调用时遇到以下错误。我尝试过不同的解决方案,但都没有效果。
<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)
答案 0 :(得分:10)
我通过将整个csv文件复制并粘贴到文本中并使用以下命令读取来解决了这个问题:
with open(self.path + "/review_collection.txt", "r", encoding="utf-8") as f:
read = f.read().splitlines()
for row in read:
print(row)
答案 1 :(得分:3)
您应该为pickle.load(f, encoding='latin1')
提供编码,但请确保文件中的所有字符都遵循编码。
默认情况下,您的pickle代码尝试使用'ASCII'解码文件失败。相反,您可以明确告诉使用哪一个。请参阅Documentation。
如果latin1无法解决,请尝试使用encoding='bytes'
,然后稍后解码所有键和值。
答案 2 :(得分:1)
我也遇到了同样的错误。我意识到我从具有左右双引号(弯引号)的文件中复制和粘贴了文本。一旦将其更改为标准的直双引号(“),问题就解决了!
有关引号之间的区别,请参见以下链接:https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html