我正在构建一个抓取工具来提取数据,但是当我得到数据时,我无法对其进行分类。我希望使用的dict键似乎不会拉动我想要的东西。我想提取“member_id”和“vote_position”。
下面的示例显示了使用“位置”键进行拉动的尝试。使用“position”,“member_id”,“vote_position”都会产生相同的KeyError。
使用print data
时,向下移动可以看到输出。尽管如此,使用print data
输出后显示的键仍会产生KeyError。
我感到非常难过。任何帮助将不胜感激。
import urllib2
import json
api_key = '72c9a68****************************'
url = 'http://api.time.com/svc/politics/v3/us/legislative/blue/113/
json_obj = urllib2.urlopen(url)
data = json.load(json_obj)
print data['positions']
Traceback (most recent call last):
File "/Users/Owner/PycharmProjects/untitled2/1", line 8, in <module>
print data [positions]
NameError: name 'positions' is not defined
JSON数据:
"positions": [
{
"member_id": "A000055",
"vote_position": "Yes",
"dw_nominate": "0.466"
},
{
"member_id": "A000367",
"vote_position": "Yes",
"dw_nominate": "0.995"
},
一个简单的print data
收益率:
{u'dw_nominate': u'-0.311', u'vote_position': u'Yes', u'member_id': u'B001242'}, {u'dw_nominate': u'0.793', u'vote_position': u'Yes', u'member_id': u'B001250'}, {u'dw_nominate': u'0.728', u'vote_position': u'Yes', u'member_id': u'B001273'}
答案 0 :(得分:0)
你提供的内容:
data = {u'dw_nominate': u'-0.311', u'vote_position': u'Yes', u'member_id': u'B001242'}, {u'dw_nominate': u'0.793', u'vote_position': u'Yes', u'member_id': u'B001250'}, {u'dw_nominate': u'0.728', u'vote_position': u'Yes', u'member_id': u'B001273'}
print type(data) # returns tuple
data[0]['vote_position'] # returns 'Yes'
获取所有密钥:
for i in xrange(len(data)): # python 2.x, for python 3, use range()
print data[i].keys()
答案 1 :(得分:0)
如果这是&#34; positions
&#34;的简单案例。项目不存在,或在某处拼写不正确,您会收到如下错误:
KeyError: 'positions'
相反,您看到的NameError
告诉您名为positions
的变量尚未定义。 Python正在尝试使用该名称引用变量,而不是使用字符串,因为该行的内容为:
print data [positions]
这个词周围缺少引号。
(至少根据你的追溯:)
Traceback (most recent call last):
File "/Users/Owner/PycharmProjects/untitled2/1", line 8, in <module>
print data [positions]