我从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的新手,所以任何帮助都表示赞赏!
答案 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
。