我是python的新手并且拿起了这本书" Python for Data Analysis" pydata书
无论如何,我尝试了第18页书中的第一个代码并且我一直收到错误。试图再次下载整个文件,但仍然有相同的错误。
这是错误消息
UnicodeDecodeError Traceback (most recent call last)
in ()
----> 1 records=[json.loads(line) for line in open(path)]
in (.0)
----> 1 records=[json.loads(line) for line in open(path)]
/Users/gambit_remy08/anaconda/lib/python3.5/encodings/ascii.py in decode(self, input, final)
24 class IncrementalDecoder(codecs.IncrementalDecoder):
25 def decode(self, input, final=False):
---> 26 return codecs.ascii_decode(input, self.errors)[0]
27
28 class StreamWriter(Codec,codecs.StreamWriter):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 6987: ordinal not in range(128)
以上是上述帖子中Github的链接 https://github.com/wesm/pydata-book/issues/48#issuecomment-266333303
答案 0 :(得分:0)
UnicodeDecodeError通常在从特定编码解码str字符串时发生。由于编码只将有限数量的str字符串映射到unicode字符,因此str字符的非法序列将导致编码特定的decode()失败。
要解决此问题,您可以使用your_string.decode('utf8', 'ignore')
records=[json.loads(line.decode('utf8', 'ignore')) for line in open(path)]
答案 1 :(得分:0)
我找到了解决方案。基本上只需要使用它并且到目前为止工作正常
records = [json.loads(line) for line in open(path, encoding='utf8')]