0

我正在使用 Python 3.7,并且正在尝试处理从网站收到的一些 JSON 数据。下面是 JSON 响应的示例,但它的长度可能会有所不同。本质上,它返回有关“官员”的详细信息,在下面的示例中,有两名官员的数据。这是使用OpenCorporates API

{"api_version":"0.4","results":{"page":1,"per_page":30,"total_pages":1,"total_count":2,"officers":[{"officer":{"id":212927580,"uid":null,"name":"NEIL KIDMAN","jurisdiction_code":"gb","position":"director","retrieved_at":"2015-12-04T00:00:00+00:00","opencorporates_url":"https://opencorporates.com/officers/212927580","start_date":"2015-01-28","end_date":null,"occupation":"SERVICE MANAGER","current_status":null,"inactive":false,"company":{"name":"GRSS LIMITED","jurisdiction_code":"gb","company_number":"09411531","opencorporates_url":"https://opencorporates.com/companies/gb/09411531"}}},{"officer":{"id":190031476,"uid":null,"name":"NEIL KIDMAN","jurisdiction_code":"gb","position":"director","retrieved_at":"2015-12-04T00:00:00+00:00","opencorporates_url":"https://opencorporates.com/officers/190031476","start_date":"2002-05-17","end_date":null,"occupation":"COMPANY DIRECTOR","current_status":null,"inactive":false,"company":{"name":"GILBERT ROAD SERVICE STATION LIMITED","jurisdiction_code":"gb","company_number":"04441363","opencorporates_url":"https://opencorporates.com/companies/gb/04441363"}}}]}}

到目前为止,我的代码是:-

response = requests.get(url) 
response.raise_for_status() 
jsonResponse = response.json() 
officerDetails = jsonResponse['results']['officers']

这很好用,但我的最终目标是创建变量并将它们写入 .csv。所以我想写一些类似的东西:-

name = jsonResponse['results']['officers']['name']
position = jsonResponse['results']['officers']['name']
companyName = jsonResponse['results']['officers']['company']['name']

有什么建议我该怎么做?如前所述,我想遍历 JSON 响应中的每个“官员”,然后捕获这些值并写入 .csv(一旦将它们分配给变量,我将处理 .csv 部分)

4

1 回答 1

1
officers = jsonResponse['results']['officers']

res = []
for officer in officers:
    data = {}
    data['name'] = officer['officer']['name']
    data['position'] = officer['officer']['position']
    data['company_name'] = officer['officer']['company']['name']
    res.append(data)
    

然后您可以继续写入res,这是list of objects一个 csv 文件。

于 2020-11-14T14:07:01.767 回答