如何使用json.reads文件(行)

2024-10-01 11:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我觉得这应该管用,我已经盯着这个看了一个小时,没有任何改善!你知道吗


Tags: 代码inpyidjson错误lineusers
1条回答
网友
1楼 · 发布于 2024-10-01 11:31:56

您的字符串格式错误。我不确定在开始时需要做些什么来去掉'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的无效格式,因此您可能需要更正这个问题。你知道吗

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

相关问题 更多 >