Python 3 UnicodeDecodeError: 'ascii'编解码器无法解码位置为0的字节0xe2:该值不在128的范围内。

8

我正在使用Python 3.5.3在Windows上实现这个笔记本,在调用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)
3个回答

13

我通过将整个csv文件复制并粘贴到文本中,并使用以下方式读取来解决了这个问题:

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

9
您可能需要为pickle.load(f, encoding='latin1')指定编码,但请确保文件中的所有字符都遵循该编码。
默认情况下,pickle代码尝试使用“ASCII”解码文件,这会导致失败。相反,您可以明确告诉它使用哪个编码。请参见文档
如果latin1不能解决问题,请尝试使用encoding='bytes',然后稍后解码所有键和值。

我在使用 CSV 时遇到了这个问题。你知道如何解决吗? - raditya gumay
@radityagumay 您可以尝试在读取时使用编码选项。您是如何读取文件的,文件中有什么内容? - Sreenadh T C
只是尝试编写一个CSV文件。文件看起来像这样 https://paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk - raditya gumay

1
我也遇到了同样的错误。我意识到我从一个带有左右双引号(卷曲引号)的文件中复制和粘贴了文本。一旦我将其更改为标准的直角双引号("),问题就解决了!
查看此链接以了解引号之间的区别:https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接