我试图解析的json有一个复杂的结构。在完整的列表中,有311个字典,我从中获得了一些键值。然而,在这311个字典中的每一个字典中,都有一个键'cadCargosFuncoes'
,它的值是一个有一个键的字典,它的值本身就是一个字典列表
我需要的是,对于json的311个字典中的每一个,在它的每一个n
字典中获取键值'funDes'
,其中n
并不总是相同的,也不能保证不同于零
我试着引入一个循环:
for i in ['cadCargosFuncoes']['pt_ar_wsgode_objectos_DadosCargosFuncoes']`
在一些不同的方面,但从来没有能够达到我需要的
import requests
import json
import csv
from csv import DictWriter
r = requests.get('http://app.parlamento.pt/webutils/docs/doc.txt?path=6148523063446f764c324679626d56304c3239775a57356b595852684c3052685a47397a51574a6c636e5276637939535a576470633352764a544977516d6c765a334c446f575a705932387657456c4a535355794d45786c5a326c7a6247463064584a684c314a6c5a326c7a644739436157396e636d466d61574e7657456c4a53563971633239754c6e523464413d3d&fich=RegistoBiograficoXIII_json.txt&Inline=true')
r.raise_for_status()
data = r.json()
mps = data['RegistoBiografico']['RegistoBiograficoList']['pt_ar_wsgode_objectos_DadosRegistoBiograficoWeb']
for j in mps:
if 'cadProfissao' in j:
pass
else:
j['cadProfissao'] = '-88'
for j in mps:
if 'cadDtNascimento' in j:
pass
else:
j['cadDtNascimento'] = '-88'
result = [{"ID": j["cadId"], "Nome": j["cadNomeCompleto"], "Sexo": j["cadSexo"], "D-Nasc": j["cadDtNascimento"], "Profissao": j["cadProfissao"]} for j in mps]
with open('bio_xiii.csv', 'w') as outfile:
writer = DictWriter(outfile, ('ID', 'Nome', 'Sexo', 'D-Nasc', 'Profissao'))
writer.writerows(result)
目前,我的csv文件有311行,分别是'cadId'
、'cadNomeCompleto'
、'cadSexo'
、'cadDtNascimento'
和'cadProfissao'
。我想要的是m
额外的列,其中m
是这311个字典中键为'funDes'
的字典的最大数目,这样每个单元格都包含了'funDes'
的值,如果存在这样的值,以及'-88'
当它不存在时(当它为空或者对于某些311个字典,'funDes'
的最大字典数小于m
)
有人能给我一些建议吗
目前没有回答
相关问题 更多 >
编程相关推荐