为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2023-04-18 17:37:29
我正在调用一个以数组形式提供输出的 API。这是数组数据。["{'meta':'projects/us/conf/94eb2c1f0574'}","{'del':'projects/us/conf/001a1143e726'}"]在这里,我想提取关键元数据的值。预期输出:projects/us/conf/94eb2c1f0574我怎样才能用 Python 做到这一点?另外,输出是正确的数组结构吗?
查看完整描述

4 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

如果您的意思是获取键为元的值,则可以使用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


查看完整回答
反对 回复 2023-04-18
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

快速修复是使用 json.loads 将 data[0] 转换为 dict -

value = json.loads(d[0].replace('\'','"'))['meta']


查看完整回答
反对 回复 2023-04-18
?
POPMUISE

TA贡献1765条经验 获得超5个赞

假设这是数组加载到变量data,data[0]是一键字典'meta'。从那里,您可以通过传递名称来访问该密钥。


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

>>> data[0]['meta']

'projects/us/conf/94eb2c1f0574'


查看完整回答
反对 回复 2023-04-18
?
森栏

TA贡献1810条经验 获得超5个赞

如果您的输入看起来确实像那样(糟糕的 api 设计,或 API 中的错误)


你可以将每个加载为 json


fixed = [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'


查看完整回答
反对 回复 2023-04-18
  • 4 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信