Python 如何使用json.reads(第行)解析twitter提要数据

Python 如何使用json.reads(第行)解析twitter提要数据,python,json,twitter,Python,Json,Twitter,我下载了大量JSON格式的twitter数据,并将其保存到一个文本文件中。现在我想逐行阅读,并使用json.reads()将其解码到字典中 我唯一的问题是它在第一行抛出一个错误,我假设这意味着函数不认为数据是JSON?我在这篇文章的底部加了一行我想解码的内容。当我只打印代码行时,代码工作正常,只有json.reads()函数抛出错误 代码如下: def decodeJSON(tweet_data): for line in tweet_data: parsedJSON

我下载了大量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"}}\\''

我觉得应该行得通,我已经盯着这个看了一个小时,没有任何进步

您的字符串格式错误。我不确定您需要做什么才能在开始时摆脱
'b\\\'
(这没有真正意义),但手动将其键入shell会给我以下信息:

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格式无效,因此您可能需要更正


更新:问题是数据是二进制格式的,只需要使用
数据进行解码。解码('utf-8')

这就是第一行的输出吗
json.loads
将无法解析它。@CoryMadden b'{“delete”:{“status”:{“id”:8054446248811457,“id_str”:“8054446248811457”,“user_id”:196129140,“user_id_str”:“196129140”},“timestamp_ms”:“1500994305560”}“这正是我从推特订阅源中提取并保存的内容:s从pycharm复制到问题似乎有点变化,但我只是从文本文件中得到的。@ChrisCollins不会在注释中添加代码/数据。”。编辑您的问题并相应地设置格式,使其更易于阅读。@ChrisCollins有了这个字符串,我就可以很好地使用json.loads了。看看我的答案。谢谢你的回复!所以这很奇怪。你说使用我在对我的原始问题json.loads()的评论中发布的字符串效果很好。。。这是否意味着它不能正确地加载到python中?我使用open()打开文本文件,然后使用一个for循环遍历每一行。。令人困惑是的,它可能是
\\`
,如果它实际上是加载的字符串的一部分。我建议在尝试调用
json.loads
之前打印该行,以确保它确实是一个有效的json行,并且它不会试图向函数传递空字符串。你可以用
line.replace(“\\”,”)
如果我从字符串中删除第一个和最后两个字符,我会有收获。。奇怪的是,它们就在那里。它可能只是一个分隔符,所以你可以打开整个文件,并在斜杠上拆分它。例如
lines=file.read();tweet\u data=lines.split(“\\”)
Awesome。我很高兴你拿到了。我更新了我的帖子,为未来的人们反映这一点。