Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python从JSON文件中提取元素?_Python_Json_Python 3.x - Fatal编程技术网

如何使用python从JSON文件中提取元素?

如何使用python从JSON文件中提取元素?,python,json,python-3.x,Python,Json,Python 3.x,我有下面的JSON文件,如果name元素是jim,我试图从每个项目中提取值dob\u year 这是我的尝试: import json with open('j.json') as json_file: data = json.load(json_file) if data['name'] == 'jim' print(data['dob_year']) 错误: File "extractjson.py", line 6 if data['name'] ==

我有下面的JSON文件,如果name元素是
jim
,我试图从每个项目中提取值
dob\u year

这是我的尝试:

import json

with open('j.json') as json_file:
    data = json.load(json_file)
    if data['name'] == 'jim'
        print(data['dob_year'])
错误:

File "extractjson.py", line 6 if data['name'] == 'jim' ^ SyntaxError: invalid syntax
这是我的档案

[
      {
        "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"
      }
    ]

您需要迭代JSON文件中的列表

data = json.load(json_file)
for item in data:
    if item['name'] == 'jim':
        print(item['dob_year'])

data
是一个字典列表!不能直接访问键值对。 尝试将其封装在循环中,以检查列表中的每个dict:

导入json
将open('j.json')作为json_文件:
data=json.load(json_文件)
对于内置数据:
如果设置为['name']=='jim':
打印(设置['dob_year'])
我建议使用:

返回条目列表,以及保存该列表的方式。您必须遍历所有列表项,然后在列表项中搜索您的字段。 此外,如果这是一项重复性的任务,则从中生成一个函数。您可以通过这种方式传递不同的文件、要提取的字段等,从而使您的工作更轻松

例如:

def extract_info(search_field, extract_field, name, filename):

import json

with open(filename) as json_file:
    data = json.load(json_file)
    for item in data:
        if item[search_field] == name:
            print(item[extract_field])

extract_info('name','dob_year','jim','j.json')

您的数据是一个字典列表。如果d['name']='jim',你需要在数据中循环d的
(d['dob_year'])
我得到了这个错误:
文件“extractjson.py”,第6行如果set['name']='jim'^SyntaxError:无效语法
啊,是的,我忘了结尾的冒号,如果set['name'],那一行应该是
=='jim':
我得到了错误:
文件“extractjson.py”,第6行if data['name']='jim'^SyntaxError:无效语法
json.load()
def extract_info(search_field, extract_field, name, filename):

import json

with open(filename) as json_file:
    data = json.load(json_file)
    for item in data:
        if item[search_field] == name:
            print(item[extract_field])

extract_info('name','dob_year','jim','j.json')