【问题标题】:Python 3 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)Python 3 UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xe2:序数不在范围内(128)
【发布时间】:2017-09-05 03:51:20
【问题描述】:

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

【问题讨论】:

    标签: python python-3.x pickle


    【解决方案1】:

    我通过将整个 csv 文件复制并粘贴到文本中并阅读它来解决这个问题:

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

    【讨论】:

      【解决方案2】:

      您可能应该为pickle.load(f, encoding='latin1') 提供编码,但请确保文件中的所有字符都遵循编码。

      默认情况下,您的泡菜代码尝试使用“ASCII”解码文件,但失败了。相反,您可以明确告诉使用哪一个。从Documentation 看到这个。

      如果 latin1 无法解决,请尝试使用 encoding='bytes',然后稍后解码所有键和值。

      【讨论】:

      • 我在使用 csv 时遇到了这个问题。你知道怎么解决吗?
      • @radiityagumay 您可以在阅读时尝试编码选项。您是如何阅读文件的,文件中有什么内容?
      • 只是想写一个 csv 文件。文件看起来像这样paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk
      【解决方案3】:

      我也遇到了同样的错误。我意识到我从具有左右双引号(弯引号)的文件中复制并粘贴了文本。一旦我将其更改为标准的直双引号 ("),问题就解决了!

      请参阅此链接了解引号之间的区别:https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

      【讨论】:

        猜你喜欢
        • 2012-06-11
        • 2013-09-10
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-13
        • 2014-02-19
        相关资源
        最近更新 更多