如何从json数据库中提取特定节点,并返回其值

2024-05-16 05:44:07 发布

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

我有一个从api中提取json数据的脚本,我希望它在提取完所述数据后,解码并选择要存储到db中的标记。现在我只需要让脚本返回特定的调用值。这就是剧本的样子,在我尝试解码之前。你知道吗

import requests
def call():
payload = {'apikey':'945e8e8499474b7e8d2bc17d87191bce', 'zip' : '47120'}
bas_url = 'http://congress.api.sunlightfoundation.com/legislators/locate'
r = requests.get(bas_url, params = payload)
grab = r.json()
return grab

这就是我被告知要设法让那些特定的标签返回

return [{key: value for key, value in result.items() if key in ("twitter_id", "office")} for result in jsonData]

但这会返回错误。有什么建议吗?你知道吗

'结果':[{'twitter\u id':'reptoddyong','ocd\u id':'ocd division'/国家:美国/州:在/cd:9中,'''电子邮件':'托德杨议员@opencongress.org网站“,”中间名“:”C.,”votesmart\u id“:120345,'名字':”Todd“,”youtube\u id“:”Reptoddyong“,”姓氏“:”Young“,”bioguide\u id“:”Y000064“,”地区“:9,'昵称”:无,'office':'1007 Longworth House office Building','term\u start':'2015-01-06','thomas\u id':'02019','party':'R','in\u office':True,'title':'Rep','govtrack\u id':'412428','crp\u id':'N00030670','term\u end':'2017-01-03','chamber':'House','state\u name':'Indiana','fax':'202-226-6866','phone':'202-225-5315','gender':'M','fec_id':['H0IN09070'],'state':'IN','website':'http://toddyoung.house.gov','name_suffix':无,'icpsr_id':21133,'facebook_id':'186203844738421','contact_form':'https://toddyoungforms.house.gov/give-me-your-opinion','birthday':'1972-08-24'},{'twitter_id':'SenDonnelly','ocd_id':'ocd division/国家:美国/州:在“,”ocu email“:”唐纳利参议员@opencongress.org网站“,”middle\u name“:无,”lis\u id“:”S356“,'名字':'乔','youtube\u id':'森多内利','姓氏':'唐纳利','生物指南\u id':'D000607','地区':无,'昵称':无,'办公室':'720哈特参议院办公楼','州\u排名':'少年','托马斯\u id':'01850','学期\u开始':'2013-01-03','政党':'D','办公室':真,'头衔':'森','政府跟踪\u id':'412205','crp_id':'N00026586','term_end':'2019-01-03','chamber':'senate','state_name':'Indiana','fax':'202-225-6798','phone':'202-224-4814','gender':'M','senate_class':1,'fec_id':['H4IN02101','S2IN00091'],'state':'IN','votesmart_id':34212,'website':'http://www.donnelly.senate.gov','name_后缀:无,'icpsr_id':20717,'facebook_id':'168059529893610',','联系表格':'http://www.donnelly.senate.gov/contact/email-joe','生日':'1955-09-28'},{'twitter\u id':'SenDanCoats','ocd\u id':'ocd division'/国家:美国/州:在“,”ocu email“:”参议员外套@opencongress.org网站“,”中间名“:”雷“,”lis_id“:”S212“,”名字“:”丹尼尔“,”youtube_id“:”SenatorCoats“,”姓氏“:”科茨“,”生物指南_id“:”C000542“,”地区“:无,“昵称”:无,‘办公室’:‘493罗素参议院办公楼’,‘州排名’:‘高级’,‘托马斯·身份证’:‘00209’,‘任期开始’:‘2011-01-05’,‘政党’:‘R’,‘在办公室’:真,‘头衔’:‘森’,‘政府跟踪·身份证’:‘402675’,‘crp·身份证’:‘N00003845’,‘任期结束’:‘2017-01-03’,‘商会’:‘参议院’,‘州名’:‘印第安纳’,‘传真’:‘202-228-1820’,‘电话’:‘202-224-5623’,‘性别’:'M','senate_class':3,'fec_id':['S0IN00053'],'state':'IN','votesmart_id':53291,'website':'http://www.coats.senate.gov,'name_suffix':None,'icpsr_id':14806,'facebook_id':'180671148633644','contact_form':'http://www.coats.senate.gov/contact/,'birthday':'1943-05-16'}


Tags: keynameinidhttpwwwcontacttwitter
1条回答
网友
1楼 · 发布于 2024-05-16 05:44:07

我猜从你发布的内容来看,你的json看起来像[{}, {}, {}]。i、 e.grab是一个python字典列表。你知道吗

试试这个?你知道吗

get_nodes = lambda x : {"twitter_id" : x.get("twitter_id", None), 
    "office" : x.get("office", None)}

def call():
    ... whatever you had before ...
    return map(get_nodes, grab)

另外,如果您希望您的原始答案起作用,您需要添加一个“else”值。在将来,我建议你发布你所遇到的错误,而不是仅仅说“这抛出了一个错误”。你知道吗

相关问题 更多 >