Python 3 UnicodeDecodeError:'ascii' 编解码器无法解码位置 0 中的字节 0xe2:序号不在范围内(128)

新手上路,请多包涵

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

原文由 user1569341 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 903
2 个回答

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

默认情况下,您的 pickle 代码尝试使用失败的“ASCII”解码文件。相反,您可以明确地告诉使用哪一个。从 Documentation 中查看。

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

原文由 Sreenadh T C 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 raditya gumay 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题