2016-11-08 169 views
2

我正在從API中獲取信息。返回的數據是JSON格式。我必須迭代並獲取多個輸入的相同數據。我想將每個輸入的JSON數據保存在python字典中以便於訪問。這是我到目前爲止有:如何讀取API JSON數據並存儲爲Python字典

import pandas 
import requests 

ddict = {} 

read_input = pandas.read_csv('input.csv') 
for d in read_input.values: 
    print(d) 
    url = "https://api.xyz.com/v11/api.json?KEY=123&LOOKUP={}".format(d) 
    response = requests.get(url) 
    data = response.json() 
    ddict[d] = data 

df = pandas.DataFrame.from_dict(ddict, orient='index') 

with pandas.ExcelWriter('output.xlsx') as w: 
    df.to_excel(w, 'output') 

與上面的代碼,我得到以下的輸出:

a.com 

我也只有從這個第一線獲得與數據的Excel輸出。我的輸入CSV文件有近400行,所以我應該看到在輸出和輸出excel文件中多於1行。

如果您有更好的方法來做到這一點,將不勝感激。另外,我得到的excel輸出很難理解。我想用字典和子字典讀取JSON數據,但我不完全理解底層數據的格式 - 我認爲它看起來最接近JSON數組。

我看了很多其他帖子,包括Parsing values from a JSON file using Python?How do I write JSON data to a file in Python?Converting JSON String to Dictionary Not ListHow do I save results of a "for" loop into a single variable?,但迄今爲止這些技術都沒有工作。如果可能的話,我寧願不醃。

我是新來的Python,所以任何幫助表示讚賞!

回答

3

我不打算用JSON來解決你的挑戰,因爲我需要更多關於你面臨的問題的信息。但是,關於使用熊貓閱讀CSV文件,這裏有一個很好的資源:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

現在,您的輸出正在被讀取的方式,因爲a.com被視爲標題(不受歡迎)。你讀的說法應該是:

read_input = pandas.read_csv('input.csv', header=None) 

現在的read_input是一個數據框(documentation)。所以,你真正想要的是第一列中的值。您可以通過read_input.values輕鬆獲得一組值。這爲每行提供了一個單獨的數組。所以你的for循環將是:

for d in read_input.values: 
    print(d[0]) 
    get_info(d[0]) 

對於JSON,我需要看到一個示例結構和您想要的方式來存儲它。

2

我認爲你的程序有一個尷尬。

試試這個:

ddict = {} 
read_input = pandas.read_csv('input.csv') 
for d in read_input.values: 
    url = "https://api.xyz.com/v11/api.json?KEY=123&LOOKUP={}".format(d) 
    response = requests.get(url) 
    data = response.json() 
    ddict[d] = data 

編輯:迭代read_input.values

+0

我做了編輯,但代碼仍然沒有迭代通過csv文件。 – SizzyNini

+0

你應該迭代'read_input.values'。 –