2016-05-03 6 views
-1

私はAPIからjsonデータを引き出すスクリプトを持っていますが、そのデータをプルしてデコードし、格納するタグを選択する必要がありますa db。今私は、特定の値を呼び出すためのスクリプトを取得する必要があります。これは私がそれを解読しようとする前のスクリプトの様子です。jsonデータライブラリから特定のノードをプルしてその値を返す方法

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_id ':' RepToddYoung '、' ocd_id ':' ocd-division/country:us/state:in/cd:9 '、' oc_email ':'[email protected] '、' last_name ':' Young '、' bioguide_id ':' Y000064 ''、 'middle_name': 'C.'、 'votesmart_id':120345、 'first_name': 'Todd'、 'youtube_id': 'RepToddYoung' 、 'district':9、 'nickname':なし、 'office': '1007 Longworth House Office Building'、 'term_start': '2015-01-06'、 'thomas_id': '02019'、 'party': ' R '、' in_office ':True、' title ':' Rep '、' govtrack_id ':' 412428 '、' crp_id ':' N00030670 '、' term_end ':' 2017-01-03 '、' chamber ':' '電話番号': '202-225-5315'、 '性別': 'M'、 'fec_ids':['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/country:us/state: '、' oc_email ':' [email protected] '、' middle_name '、' los_id ':' S356 '、' first_name ':'ジョー '、' youtube_id ':' sendonnelly '、' last_name ':' Donnelly '、' bioguide_id ':' D000607 '、' district ' 'nickname':なし、 'office': '720 Hart Senate Office Building'、 'state_rank': 'ジュニア'、 'thomas_id': '01850'、 'term_start': '2013-01-03'、 'party' 'd'、 'in_office':True、 'title': 'Sen'、 'govtrack_id': '412205'、 'crp_id': 'N00026586'、 'term_end': '2019-01-03'、 'chamber': '電話番号': '202-224-4814'、 '性別': 'M'、 'senate_class':1、 'senate'、 'state_name': 'Indiana'、 'fax': '202-225-6798' 'icpsr_id':20717、 'facebook_id': 'fec_ids':['H4IN02101'、 'S2IN00091']、 '状態': 'IN'、 'votesmart_id':34212、 'website': 'http://www.donnelly.senate.gov'、 'name_suffix' ':' 168059529893610 '、' contact_form ':' http://www.donnelly.senate.gov/contact/email-joe '、' birthday ':' 1955-09-28 '}、{' twitter_id ':' SenDanCoats '、' ocd_id ':' ocd-division /国名:us/state:in '、' oc_email ':' [email protected] '、' middle_name ':' Ray '、' lis_id ':' S212 '、' first_name ':' Daniel '、' youtube_id ' 「州名」、「州名」、「州名」、「市町村名」、「市町村名」、「市区町村名」、「市区町村名」、 'タイトル' 'Sen' '' govtrack_id '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 402675 '、' crp_id ':' N00003845 '、' term_end ':' 2017-01-03 '、' chamber ':' senate '、' state_name ':' Indiana '、' fax ':' 202-228-1820 ' 、 '電話番号': '202-224-5623'、 '性別': 'M'、 'senate_class':3、 'fec_ids':['S0IN00053']、 '状態': 'IN'、 'votesmart_id':53291 'icpsr_id':14806、 'facebook_id': '180671148633644'、 'contact_form': 'http://www.coats.senate.gov/contact/'、 'birthday': '1943-05-16'}] 'ウェブサイト': 'http://www.coats.senate.gov'、 'name_suffix' }

+0

デコードされたJSONの例を投稿してください。(つまり、あなたのプログラムに 'プリント(グラブを)'追加し、あなたの質問にそのサンプルをコピー&ペーストします。) –

+0

は何度も何度も同じ質問を投稿する停止してください。あなたが止まらなければ、行動が取られます。これはあなたのためのものです。 –

答えて

0

I'm guあなたのjsonをエッセイすると、あなたが投稿したものから[{}, {}, {}]のように見えます。すなわちgrabは辞書のパイソンリストです。

お試しください。

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」値を追加する必要があります。将来、「これはエラーを投げた」というだけでなく、どんな種類のエラーを投稿することをお勧めします。

+0

JSON におけるファイル "/home/brad/Documents/congress.py"、ライン10、通話中 グラブ= r.json() ファイル ""、行808におけるファイル ""、行1、 return complexjson.loads(self.text、** kwargs) ファイル ""、行319、ロード中 戻り値_default_decoder.decode(秒) ファイル "/ y"、行339、デコード中 obj、終了=自己。 raw_decode でraw_decode(S、IDX = _W(S、0).END()) ファイル "/usr/lib/python3.5/json/decoder.py"、ライン357は、JSONDecodeError( "期待値" を上げます、なし json.decoder.JSONDecodeErrorからS、err.value):期待値:行1列1(CHAR 0) –

+0

任意resou私はこのシナリオを学ぶためのRCEをいただければ幸いです –

+0

あなたのコードは、 ')(' r.jsonにクラッシュされています。編集で投稿したデータサンプルが取得したものであれば、それは有効なjsonではありません(最初の中括弧がありません)。あなたは 'r.text'の正確な出力を投稿できますか? – Thtu

関連する問題