UnicodeDecodeError:' ascii'编解码器不能解码位置81201中的字节0xe2:序数不在范围内(128)

时间:2017-03-01 02:36:35

标签: python runtime-error

我正在尝试阅读一个dictionary_format_file.txt,但我一直在收到错误。

我阅读了其他帖子,但他们完全有道理,但我无法解决我的问题。

感谢任何帮助。

import ast

path = '/Users/xyz/Desktop/final/'
filename = 'dictionary_format_text_file.txt'

with open((path+filename), 'r') as f:
    s=f.read()
    s=s.encode('ascii', 'ignore').decode('ascii')

错误:

  Traceback (most recent call last):
  File "/Users/xyz/Desktop/final/boolean_query.py", line 347, in <module>
    s=s.encode('ascii', 'ignore').decode('ascii')

  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
builtins.UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 81201: ordinal not in range(128)

1 个答案:

答案 0 :(得分:2)

f.read返回一个字节字符串,而不是Unicode字符串。当您尝试在其上使用encode时,Python 2首先尝试使用'ascii'编解码器解码它,并且启用了错误(Python 3只会在不尝试解码的情况下给您一个错误)。隐藏decode就是产生错误。你可以通过摆脱多余的encode

来轻松避免它
s=s.decode('ascii', 'ignore')