在python中从json文件提取数据

2024-03-29 10:21:11 发布

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

我一直在试图找到搜索特定值和提取数据的最佳方法。我是新来的,希望我说得对。

    {"family": {
    "name": "Mary",
    "age": "32",
    "sex": "female",
    "kids": [
      {
        "name": "jim",
        "age": "10",
        "sex": "male",
        "dob_year": "2007",
        "ssn": "123-23-1234"
      },
      {
        "name": "jill",
        "age": "6",
        "sex": "female",
        "dob_year": "2011",
        "ssn": "123-23-1235"
      }]}}

如果我需要搜索包含“1234”的“ssn”,并返回“name”“jim”,那么实现这一目标的最佳方法是什么?


Tags: 数据方法nameagefamilyyearmalefemale
3条回答

您可以首先迭代子对象并应用条件

import json
js = '''your json text data'''
j = json.loads(js)

for items in j['family']['kids']:
    if '1234' in items['ssn']:
        print(items['name'])

输出

'jim'

假设您将json文本加载到js变量中。kn = next((sj['name'] for sj in js['family']['kids'] if ('1234' in sj['ssn'])), None)

如果找到条件,kn将为您提供名称,否则将为None。当然你也可以把条件变为变量。希望有帮助。

使用如下json包

ans =     '{"family": {
    "name": "Mary",
    "age": "32",
    "sex": "female",
    "kids": [
      {
        "name": "jim",
        "age": "10",
        "sex": "male",
        "dob_year": "2007",
        "ssn": "123-23-1234"
      },
      {
        "name": "jill",
        "age": "6",
        "sex": "female",
        "dob_year": "2011",
        "ssn": "123-23-1235"
      }]}}'
temp = json.loads(ans)
for kid in  temp['family']['kids']:
     print kid['name'],kid['ssn']

希望这就是你要找的。

相关问题 更多 >