2016-05-03 7 views
-4

Ich habe ein Skript, das JSON-Daten aus einem API zieht, und ich will es dann nach dem Ziehen der Daten, dekodieren und wählen Sie die Tags in eine db speichern. Im Moment muss ich nur das Skript bekommen, um bestimmte aufgerufene Werte zurückzugeben. So sieht das Skript aus, bevor ich es entschlüsseln will.Wie Zugriff auf Schlüsselwerte in einem JSON-Dateien Wörterbücher mit Python

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 

'Ergebnisse': [{ 'twitter_id': 'RepToddYoung', 'ocd_id': 'ocd-Division/Land: us/Zustand: in/cd: 9', 'oc_email': '[email protected]', 'mittlerer_name': 'C.', 'votesmart_id': 120345, 'first_name': 'Todd', 'youtube_id': 'RepToddYoung', 'Nachname': 'Jung ' 'bioguide_id': 'Y000064', 'Kreis': 9, 'Spitznamen': Keine, 'Büro': '1007 Longworth House-Bürogebäude', 'term_start': '2015.01.06',' thomas_id ':' 02019 ',' party ':' R ', ' in_office ': Wahr,' title ':' Rep ',' govtrack_id ':' 412428 ',' crp_id ': 'N00030670', 'term_end': '2017-01-03', 'Kammer': 'Haus', 'state_name': 'Indiana', 'Fax': '202-226-6866', 'Telefon': '202-225-5315', 'Geschlecht': 'M', 'fec_ids': ['H0IN09070'], 'state': 'IN', 'Website': 'http://toddyoung.house.gov', 'name_suffix': Keine, 'icpsr_id': 21133, 'facebook_id': '186203844738421', 'contact_form': '', 'Geburtstag': '1972-08-24'}, {'twitter_id': 'SenDonnelly', 'ocd_id' : 'ocd-division/country: us/state: in', 'oc_email': '[email protected]', 'mittlerer_name': Keine, 'lis_id': 'S356', 'first_name': "Joe", "youtube_id": "sendonnelly", "last_name": "Donnelly", "bioguide_id": "D000607", "Bezirk": Keine, 'Spitzname': Keine, 'Büro': '720 Hart-Senatsbürogebäude', 'state_rank': 'Junior', 'thomas_id': '01850', 'term_start': '2013.01.03', 'Partei': 'D', 'in_office': Stimmt, 'title': 'Sen', 'govtrack_id': '412205', 'crp_id': 'N00026586', 'term_end': ‚2019.01.03 ',' kammer ':' senat ', ' state_name ':' Indiana ',' Fax ':' 202-225-6798 ',' Telefon ': ' 202-224-4814 ',' Geschlecht ':' M ',' senate_class ': 1,' fec_ids ': [' H4IN02101 ',' S2IN00091 '],' state ':' IN ',' votesmart_id ': 34212, ' website ':' http://www.donnelly.senate.gov ',' name_suffix ': Keine, 'icpsr_id': 20717, 'facebook_id': '168059529893610', 'kontaktformular': 'http://www.donnelly.senate.gov/contact/email-joe', 'birthday': '1955.09.28'}, { 'twitter_id': 'SenDanCoats', 'ocd_id': 'ocd-Division/Land: us/Staat: in', 'oc_email': ‚[email protected] ',' mittlerer_name ':' Ray ',' lis_id ':' S212 ', ' first_name ':' Daniel ',' youtube_id ':' SenatorCoats ',' Nachname ': ' Coats ',' bioguide_id ':' C000542 ',' Bezirk ': Keine,' Spitzname ': Keine, ' Büro ':' 493 Russell Senate Bürogebäude ',' state_rank ': ' senior ',' thomas_id ':' 00209 ',' term_start ':' 2011-01-05 ',' party ': ' R ',' in_office ': Wahr,' title ':' Sen ',' govtrack_id ':' 402675 ', ' crp_id ':' N00003845 ',' term_end ' : "2017-01-03", "Kammer": "Senat", "state_name": "Indiana", "Fax": "202-228-1820", "Telefon": "202-224-5623" , 'Geschlecht': 'M', 'senate_class': 3, 'fec_ids': ['S0IN00053'], 'state': 'IN', 'votesmart_id': 53291, 'website': 'http://www.coats.senate.gov', ' Namenszusatz': Keine, 'icpsr_id': 14806, 'facebook_id': '180671148633644', 'CONTACT_FORM': 'http://www.coats.senate.gov/contact/', 'Geburtstag': '1943.05.16'}]}

das ist die JSON-Daten zurück, ich will auf IE speziell nennen {'twitter_id': 'RepToddYoung'}, or {'first_name': 'Todd'}

Statt mein Skript die gesamte jSON-Datei zurückkehren, die es

Antwort

0

Blick auf die Datenstruktur abruft, die Sie zurück bekommen. Es ist ein Wörterbuch, das eine Liste von Wörterbüchern enthält. Sie können die Liste Zugriff auf die 'results' Taste:

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

Von dort wird das Wörterbuch das Element enthält, sind Sie nach ist das erste Element der Liste, so:

d = l[0] 

Und die spezifischen Werte können sein aus dem Wörterbuch abgerufen:

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

Sie, dass auf diese vereinfachen kann:

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

Wahrscheinlich werden Sie über die Liste iterieren:

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

die folgende Ausgabe:

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