Python json解码的问题

时间:2016-12-14 07:52:50

标签: python json

我是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

2 个答案:

答案 0 :(得分:0)

UnicodeDecodeError通常在从特定编码解码str字符串时发生。由于编码只将有限数量的str字符串映射到unicode字符,因此str字符的非法序列将导致编码特定的decode()失败。

参考questions

要解决此问题,您可以使用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')]