如何使用python

时间:2016-05-03 03:06:33

标签: python json decode

我有一个从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
  

'结果':[{'twitter_id':'RepToddYoung','ocd_id':   'ocd-division / country:us / state:in / cd:9','oc_email':   'Rep.Toddyoung@opencongress.org','middle_name':'C','votesmart_id':   120345,'first_name':'Todd','youtube_id':'RepToddYoung',   'last_name':'Young','bioguide_id':'Y000064','district':9,   '昵称':无,'办公室':'1007 Longworth House办公楼',   'term_start':'2015-01-06','thomas_id':'02019','party':'R',   'in_office':是的,'title':'Rep','govtrack_id':'412428','crp_id':   'N00030670','term_end':'2017-01-03','chamber':'house',   'state_name':'Indiana','fax':'202-226-6866','phone':   '202-225-5315','性别':'M','fec_ids':['H0IN09070'],'州':   'IN','网站':'http://toddyoung.house.gov','name_suffix':无,   'icpsr_id':21133,'facebook_id':'186203844738421','contact_form':   'https://toddyoungforms.house.gov/give-me-your-opinion','生日':   '1972-08-24'},{'twitter_id':'SenDonnelly','ocd_id':   'ocd-division / country:us / state:in','oc_email':   'Sen.Donnelly@opencongress.org','middle_name':无,'lis_id':   'S356','first_name':'Joe','youtube_id':'sendonnelly','last_name':   'Donnelly','bioguide_id':'D000607','district':无,'昵称':   没有,'办公室':'720哈特参议院办公楼','state_rank':   'junior','thomas_id':'01850','term_start':'2013-01-03','party':   'D','in_office':是的,'title':'Sen','govtrack_id':'412205',   'crp_id':'N00026586','term_end':'2019-01-03','chamber':'参议院',   'state_name':'Indiana','fax':'202-225-6798','phone':   '202-224-4814','性别':'M','senate_class':1,'fec_ids':   ['H4IN02101','S2IN00091'],'州':'IN','votesmart_id':34212,   'website':'http://www.donnelly.senate.gov','name_suffix':无,   'icpsr_id':20717,'facebook_id':'168059529893610','contact_form':   'http://www.donnelly.senate.gov/contact/email-joe','生日':   '1955-09-28'},{'twitter_id':'SenDanCoats','ocd_id':   'ocd-division / country:us / state:in','oc_email':   'Sen.Coats@opencongress.org','middle_name':'雷','lis_id':'S212',   'first_name':'Daniel','youtube_id':'SenatorCoats','last_name':   'Coats','bioguide_id':'C000542','district':无,'昵称':无,   'office':'493 Russell Senate Office Building','state_rank':   'senior','thomas_id':'00209','term_start':'2011-01-05','party':   'R','in_office':是的,'标题':'森','govtrack_id':'402675',   'crp_id':'N00003845','term_end':'2017-01-03','chamber':'参议院',   'state_name':'Indiana','fax':'202-228-1820','phone':   '202-224-5623','性别':'M','senate_class':3,'fec_ids':   ['S0IN00053'],'州':'IN','votesmart_id':53291,'网站':   'http://www.coats.senate.gov','name_suffix':无,'icpsr_id':14806,   'facebook_id':'180671148633644','contact_form':   'http://www.coats.senate.gov/contact/','生日':'1943-05-16'}]}

那是json数据返回的,我想专门调用IE {'twitter_id': 'RepToddYoung'}, or {'first_name': 'Todd'}

而不是我的脚本返回它检索的整个json文件

1 个答案:

答案 0 :(得分:0)

查看您要获取的数据结构。它是一个包含字典列表的字典。您可以使用'results'键访问列表:

l = r.json()['results']

从那里,包含你所追踪的项目的字典是列表的第一项,所以:

d = l[0]

可以从字典中检索特定值:

print(d['twitter_id'])
print(d['first_name'])

您可以将其简化为:

r.json()['results'][0]['twitter_id']
r.json()['results'][0]['first_name']

可能你会想要遍历列表:

for d in r.json()['results']:
    print('{first_name} {last_name}: {twitter_id}'.format(**d))

将输出:

Todd Young: RepToddYoung
Joe Donnelly: SenDonnelly
Daniel Coats: SenDanCoats