如何使用python过滤来自文件的json输出?

2024-04-20 01:40:19 发布

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

我们希望从testers.txt过滤以下json输出,以查找列表形式的userid

{
    "status": true,
    "user": {
        "user_id": "16214222",
        "username": "tester11"
    }
},
{
    "status": true,
    "user": {
        "user_id": "44223333",
        "username": "tester22"
    }
}

我们目前所做的(尝试旧代码):

^{pr2}$

最后,输出应为:

16214222,
44223333

我们当前收到以下错误:

Traceback (most recent call last):
  File "start.py", line 5, in <module>
    data = json.loads(inText)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 367, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 7 column 2 - line 14 column 2 (char 105 - 212)

我是stackoverflow的新人-请随时评论我的问题,这样我就能提高自己。


Tags: inpyidjsontruedatalibusr
2条回答

json文件中需要一个前导方括号和一个尾随方括号,如下所示:

[{
    "status": true,
    "user": {
        "user_id": "16214222",
        "username": "tester11"
    }
},
{
    "status": true,
    "user": {
        "user_id": "44223333",
        "username": "tester22"
    }
}]

然后您可以执行以下操作:

^{pr2}$

返回:

16214222
44223333

使用this website验证json时,您将知道json是无效的。在

您需要添加一个[]使json成为json列表中的json,因为您的json不是有效的json。在

inText = '''
[{
    "status": true,
    "user": {
        "user_id": "16214222",
        "username": "tester11"
    }
},
{
    "status": true,
    "user": {
        "user_id": "44223333",
        "username": "tester22"
    }
}]
'''

import json

with open('testers.txt') as fp:
    inText = fp.read()
data = json.loads(inText)
print [d['user']['user_id'] for d in data]

输出:

^{pr2}$

相关问题 更多 >