如何读取API JSON数据并存储为Python字典

时间:2016-11-08 16:07:05

标签: python json loops dictionary

我从API中提取信息。返回的数据采用JSON格式。我必须迭代并获得多个输入的相同数据。我想在python字典中保存每个输入的JSON数据,以便于访问。这就是我到目前为止所做的:

is this needed?

使用上面的代码,我得到以下输出:

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')

我也只从第一行得到一个excel输出数据。我的输入csv文件有近400行,所以我应该在输出和输出excel文件中看到多行。

如果您有更好的方法,我们将不胜感激。另外,我得到的excel输出很难理解。我想使用字典和子句读取JSON数据,但我不完全理解底层数据的格式 - 我认为它看起来最接近JSON数组。

我查看了很多其他帖子,包括How do I write JSON data to a file in Python?Converting JSON String to Dictionary Not List以及How do I save results of a "for" loop into a single variable?和{{3}},但到目前为止,这些技术都没有奏效。如果可能的话,我宁愿不腌制。

我是Python的新手,所以任何帮助都表示赞赏!

2 个答案:

答案 0 :(得分:3)

我不会在这里用JSON解决您的挑战,因为我需要有关您所面临问题的更多信息。但是,关于使用Pandas从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是一个DataFrame(documentation)。所以,你真正想要的是第一列中的值。您可以通过read_input.values轻松获取一系列值。这为每行提供了一个单独的数组。所以你的for循环将是:

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

对于JSON,我需要查看示例结构和您希望的存储方式。

答案 1 :(得分: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