0

我的 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])

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

4

2 回答 2

1

当您说data = json.loads(json_post)时,听起来您有一个列表,而不是您似乎期望的 dict。

如果这不是问题,请尝试使用完整的回溯和json_post.

于 2013-04-29T17:15:57.023 回答
1

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

 data = json.loads(json_post)[0]
于 2013-04-29T17:16:19.377 回答