列表索引必须是整数错误

时间:2013-04-29 17:13:00

标签: python

我的Python代码中出现以下错误:

if data['result'] == 0:
TypeError: list indices must be integers, not str

以下是代码:

data = urllib.urlencode(parameters)
req = urllib2.Request(url, data)
try:
    response = urllib2.urlopen(req)
except urllib2.URLError, e:
    self.redirect('/error')
json_post = response.read()
data = json.loads(json_post)
response_dict = simplejson.loads(json_post)

virustotal = VirusTotal()
if data['result'] == 0:
    virustotal_result = True

elif data['result'] == -2:
    self.response.out.write("API Request Rate Limit Exceeded<br/>")
elif data['result'] == -1:
    self.response.out.write("API Key provided is wrong<br/>")
elif data['result'] == 1:
    self.response.out.write("Time Stamp : %s<br/>"% data['report'][0])

我知道数据是一个列表。所以我也把它改成了整数,但代码然后显示了范围错误。请帮助??

2 个答案:

答案 0 :(得分:1)

当你说data = json.loads(json_post)时,听起来你有一个清单,而不是你似乎期待的字典。

如果这不是问题,请尝试使用完整的追溯和json_post的值进行更新。

答案 1 :(得分:1)

您正在从response.read获取一组对象,这意味着您正在获取Python list。试试这个:

 data = json.loads(json_post)[0]
相关问题