Python 从数组中提取匹配的 JSON 值

我正在调用一个以数组形式提供输出的 API。这是数组数据。

["{'meta':'projects/us/conf/94eb2c1f0574'}","{'del':'projects/us/conf/001a1143e726'}"]

在这里,我想提取关键元数据的值。

预期输出:

projects/us/conf/94eb2c1f0574

我怎样才能用 Python 做到这一点?另外,输出是正确的数组结构吗?


素胚勾勒不出你
浏览 189回答 4
4回答

饮歌长啸

如果您的意思是获取键为元的值,则可以使用next和理解:data = ["{'meta':'projects/us/conf/94eb2c1f0574'}","{'del':'projects/us/conf/001a1143e726'}"]>>> next(v for (k, v) in map(dict.items, data) if k == 'meta') projects/us/conf/94eb2c1f0574

慕雪6442864

快速修复是使用 json.loads 将 data[0] 转换为 dict -value = json.loads(d[0].replace('\'','"'))['meta']

POPMUISE

假设这是数组加载到变量data,data[0]是一键字典'meta'。从那里,您可以通过传递名称来访问该密钥。>>> data = [{'meta':'projects/us/conf/94eb2c1f0574'}, {'del':'projects/us/conf/001a1143e726'}]>>> data[0]['meta']'projects/us/conf/94eb2c1f0574'

森栏

如果您的输入看起来确实像那样(糟糕的 api 设计,或 API 中的错误)你可以将每个加载为 jsonfixed = [json.loads(string_thing.replace("'",'"')) for string_thing in response_array] >>> fixed[0]['meta'] u'projects/us/conf/94eb2c1f0574' >>> fixed[1]['del'] u'projects/us/conf/001a1143e726'如果你想让它成为一个大字典data = {}for string_thing in response_array:    # this assumes the strings are valid json and always dicts    data.update(json.loads(string_thing.replace("'",'"')))>>> data{u'meta': u'projects/us/conf/94eb2c1f0574', u'del': u'projects/us/conf/001a1143e726'}>>> data['meta']u'projects/us/conf/94eb2c1f0574'>>> data['del']u'projects/us/conf/001a1143e726'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python