我有一个通过REST API返回的大型JSON项目,我不会将其与全文混淆,但这里是我目前正在使用的代码:
import urllib2
import json
req = urllib2.Request
('http://elections.huffingtonpost.com/
pollster/api/polls.json?state=IA')
response = urllib2.urlopen(req)
the_page = response.read()
decode = json.loads(the_page)
#print = decode #removed, because it is not actually related to the question
print decode
我一直试图从中提取信息,例如日期调查更新,民意调查中的实际数据等(特别是总统民意调查),但我无法返回任何数据。有人可以帮忙吗?
编辑: 实际问题是如何从返回的数组/字典中查询数据
答案 0 :(得分:2)
问题是,您用数据覆盖print
,而不是打印数据。只需删除最后一行中的=
,它应该可以正常工作:
print decode
如果要使用Python 3,则需要print
的括号。这看起来像这样:
print(decode)
编辑:当您更新问题时,这里是您实际问题的答案:数据由loads
函数作为词组和列表的组合返回。因此,您还可以像dict / list一样访问数据。例如,要在一个列表中获取所有民意调查的last_updated
字段,您可以执行以下操作:
all_last_updated = [poll['last_updated'] for poll in decode]
或者只是获得由宪法责任项目"赞助的所有民意调查的结束日期,您可以这样做:
end_dates = [poll['end_date'] for poll in decode if any(sponsor['name'] == 'Constitutional Responsibility Project' for sponsor in poll['sponsors'])]
或者,如果您只想要列表中第一个民意调查的ID,请执行:
the_id = decode[0]['id']
您可以通过类似的方式从json访问任何内容。
答案 1 :(得分:0)
这是因为你做了
print = decode
相反,如果您使用的是python 2,请执行
print decode
或在python 3中做
print(decode)