如何使用 python 提取嵌套在响应中的几个字段

How to extract a couple of fields nested in response using python

我是 python 初学者。我想寻求有关检索响应数据的帮助。这是我的脚本:

import pandas as pd
import re
import time
import requests as re
import json

response = re.get(url, headers=headers, auth=auth)
data = response.json()

这是 json 回复的一部分:

{'result': [{'display': '',
   'closure_code': '',
   'service_offer': 'Integration Platforms',
   'updated_on': '2022-04-23 09:05:53',
   'urgency': '2',
   'business_service': 'Operations',
   'updated_by': 'serviceaccount45',
   'description': 'ALERT returned 400 but expected 200',
   'sys_created_on': '2022-04-23 09:05:53',
   'sys_created_by': 'serviceaccount45',
   'subcategory': 'Integration',
   'contact_type': 'Email',
   'problem_type': 'Design: Availability',
   'caller_id': '',
   'action': 'create',
   'company': 'aaaa',
   'priority': '3',
   'status': '1',
   'opened': 'smith.j',
   'assigned_to': 'doe.j',
   'number': '123456',
   'group': 'blabla',
   'impact': '2',
   'category': 'Business Application & Databases',
   'caused_by_change': '',
   'location': 'All Locations',
   'configuration_item': 'Monitor',
   },

我只想提取一组数据 = 'blablabla'。然后我想提取字段如:

number = data['number']
group = data['group']
service_offer = data['service_offer']
updated = data['updated_on']
urgency = data['urgency']
username = data['created_by']
short_desc = data['description']

应该怎么做?

我知道要检查第一个值我应该使用:

service_offer = data['result'][0]['service_offer']

我尝试创建字典,但是出现错误:

 data_result = response.json()['result']

payload ={
    number = data_result['number']
    group = data_result['group']
    service_offer = data_result['service_offer']
    updated = data_result['updated_on']
    urgency = data_result['urgency']
    username = data_result['created_by']
    short_desc = data_result['description']
}

TypeError: list indices must be integers or slices, not str:

所以,我已经开始创建如下所示的内容。但我卡住了:

get_data = []
if len(data) > 0:
      for item in range(len(data)):
        get_data.append(data[item])

我可以寻求帮助吗?

如果 data 是您对问题的解码 json 回复,那么您可以:

# find group `blabla` in result:
g = next(d for d in data["result"] if d["group"] == "blabla")

# get data from the `blabla` group:
number = g["number"]
group = g["group"]
service_offer = g["service_offer"]
updated = g["updated_on"]
urgency = g["urgency"]
username = g["sys_created_by"]
short_desc = g["description"]

print(number, group, service_offer, updated, urgency, username, short_desc)

打印:

123456 blabla Integration Platforms 2022-04-23 09:05:53 2 serviceaccount45 ALERT returned 400 but expected 200