我已经以JSON格式下载了大量的Twitter数据并将其保存到文本文件中。我现在想逐行阅读,并使用json.reads()
将其解码为字典。
我唯一的问题是它在第一行引发错误,我认为这意味着函数不认为数据是JSON?我在这篇文章的底部添加了我想要解码的行。当我只是打印行代码工作正常,它只有json.reads()
函数抛出错误。
以下是代码:
def decodeJSON(tweet_data):
for line in tweet_data:
parsedJSON = json.loads(line)
print(parsedJSON) # I just want to print for now to confirm it works.
这是错误:
File "/Users/cc756/Dropbox/PythonProjects/TwitterAnalysisAssignment/tweet_sentiment.py", line 17, in analyseSentiment
parsedJSON = json.loads(line) File "/Users/cc756/anaconda/envs/tensorflow/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s) File "/Users/cc756/anaconda/envs/tensorflow/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/Users/cc756/anaconda/envs/tensorflow/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
这是第一个字符串:
'b\\'{"delete":{"status":{"id":805444624881811457,"id_str":"805444624881811457","user_id":196129140,"user_id_str":"196129140"},"timestamp_ms":"1500994305560"}}\\''
我觉得它应该有效,我一直盯着这个一个小时而没有任何进步!
答案 0 :(得分:1)
您的字符串格式错误。我不确定你需要做些什么才能摆脱'b\\'
(它真的没有意义),但是手动输入shell给我这个: / p>
In [119]: json.loads(b'{"delete":{"status":{"id":805444624881811457,"id_str":"80
...: 5444624881811457","user_id":196129140,"user_id_str":"196129140"},"time
...: stamp_ms":"1500994305560"}}')
Out[119]:
{u'delete': {u'status': {u'id': 805444624881811457,
u'id_str': u'805444624881811457',
u'user_id': 196129140,
u'user_id_str': u'196129140'},
u'timestamp_ms': u'1500994305560'}}
抱歉,我发表了评论,但想象一下评论中的这篇文章......:)
我不确定将该字符串粘贴到问题中的原因是什么,但是它遵循了无效的Python格式,因此您可能需要更正它。
更新:问题是数据是二进制格式,只需要用data.decode('utf-8')
解码