2016-05-03 7 views
-1

Ich habe ein Skript, das JSON-Daten von einem API abruft, und ich will es dann nach dem Ziehen der Daten, dekodieren und wählen Sie welche Tags zu speichern eine db. Gerade jetzt muss ich nur das Skript bekommen, um bestimmte aufgerufene Werte zurückzugeben. So sieht das Skript aus, bevor ich es entschlüsseln will. Wie man einen bestimmten Knoten aus einer JSON-Datenbibliothek zieht und seinen Wert zurückgibt

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 

das ist, was mir gesagt wurde, zu versuchen, diese spezifischen Tags erhalten zurück

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

aber das gibt Fehler. irgendwelche Vorschläge?

'Ergebnisse': [{'twitter_id': 'RepToddYoung', 'ocd_id': 'ocd-division/Land: us/state: in/cd: 9', 'oc_email':'[email protected] .org ',' mittlerer_name ':' C. ',' votesmart_id ': 120345,' vorname ':' Todd ',' youtube_id ':' RepToddYoung ',' last_name ':' Jung ',' bioguide_id ':' Y000064 ' , 'Bezirk': 9, 'Spitzname': 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 ',' Staatsname ':' 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 ',' kontaktformular ':' https://toddyoungforms.house.gov/give-me-your-opinion ',' birthday ' : 1972 -08-24 '}, {' twitter_id ':' SenDonnelly ',' ocd_id ':' ocd-division/Land: us/state: in ',' oc_email ':' [email protected] ',' mittlerer_name ': Keine,' lis_id ':' S356 ',' Vorname ':' Joe ',' youtube_id ':' sendonnelly ',' Nachname ':' 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', 'party': 'D', 'in_office': Richtig, 'title': 'Sen', 'govtrack_id': '412205', 'crp_id': 'N00026586', 'term_end': '2019-01-03', 'Kammer': "senate", "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 ',' contact_form ':' http://www.donnelly.senate.gov/contact/email-joe ',' Geburtstag ':' 1955-09-28 '}, {' twitter_id ':' SenDanCoats ',' ocd_id ':' ocd-division/Land: US/Bundesstaat: in ',' oc_email ':' [email protected] ',' mittlerer_Name ':' Ray ',' lis_id ':' S212 ',' Vorname ':' Daniel ',' youtube_id ' : 'SenatorCoats', 'last_name': 'Coats', 'bioguide_id': 'C000542', 'Bezirk': Keine, 'Spitzname': Keine, 'Büro': '493 Russell Senate Office Building', '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 ':' senate ',' state_name ':' Indiana ',' fax ':' 202-228-1820 ' , 'Telefon': '202-224-5623', 'Geschlecht': 'M', 'senate_class': 3, 'fec_ids': ['S0IN00053'], 'Staat': 'IN', 'voteMart_ID': 53291 , 'website': 'http://www.coats.senate.gov', 'name_suffix': Keine, 'icpsr_id': 14806, 'facebook_id': '180671148633644', 'contact_form': 'http://www.coats.senate.gov/contact/', 'birthday': '1943-05-16'}] }

+0

Geben Sie ein Beispiel für den dekodierten JSON ein.(Das heißt, fügen Sie 'print (greife)' zu Ihrem Programm hinzu und kopieren Sie ein Beispiel davon in Ihre Frage.) –

+0

Bitte hören Sie auf, dieselben Fragen immer wieder zu posten. Wenn Sie nicht anhalten, werden Maßnahmen ergriffen. Das ist zu deinem Besten. –

Antwort

0

Ich bin gu ESSing Ihr JSON sieht etwas wie [{}, {}, {}] von dem, was Sie gepostet haben. d.h. grab ist eine Python-Liste von Wörterbüchern.

Versuchen Sie das?

Wenn Sie möchten, dass Ihre ursprüngliche Antwort funktioniert, müssen Sie einen Wert "else" hinzufügen In Zukunft würde ich empfehlen, einen Fehler zu melden, anstatt nur zu sagen: "Das hat einen Fehler verursacht".

+0

File "", Zeile 1, in File "/home/brad/Documents/congress.py", Zeile 10, in Aufruf Schnappen = r.json() File "" Linie 808, in json return complexjson.loads (self.text, ** kwargs) Datei "", Zeile 319, in Lasten return _default_decoder.decode (s) Datei "/ y", Zeile 339, in Dekodierung obj, end = self. raw_decode (s, idx = _w (s, 0) .end()) Datei "/usr/lib/python3.5/json/decoder.py", Zeile 357, in raw_decode Raise JSONDecodeError ("Expecting value", s, err.value) von None json.decoder.JSONDecodeError: Erwartungswert: Zeile 1 Spalte 1 (Zeichen 0) –

+0

beliebig resou Rce für mich, über dieses Szenario zu lernen würde sehr geschätzt werden –

+0

Ihr Code stürzt auf 'r.json()'. Wenn das Datensample, das Sie in Ihrem Edit gepostet haben, das ist, was Sie erhalten, dann ist es kein gültiger JSON (eine geschweifte Klammer fehlt ganz am Anfang). Kannst du die genaue Ausgabe von 'r.text' posten? – Thtu