TypeError:字符串索引必须是整数,而不是str//尝试获取键的值

2024-10-01 13:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从返回的值中获取一个键,但是当我使用简单的方法只获取特定键的值时,我得到了一个错误:TypeError:string索引必须是整数,而不是str

我也尝试了.get()方法,但也没用。有人能告诉我我做错了什么吗?在

>>> import urllib2
>>> url = 'http://192.168.250.1/ajax.app?SessionId=8ef05397-ef00-451a-bc1c-c0d61
5a4811d&service=getDp&plantItemId=1413'
>>> response = urllib2.urlopen(url)
>>> dict = response.read()
>>> dict
'{"service":"getDp","plantItemId":"1413","value":" 21.4","unit":"\xc2\xb0C"}'
>>> dict['value']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string indices must be integers, not str

Tags: 方法urlgetstringvalueresponse错误service
2条回答

response.read()返回的是string类型的对象,而不是字典,您可以仅使用整数索引为字符串编制索引,因此您会得到错误。在

您需要解析这个字符串并将其转换为字典。要将字典字符串转换回字典,可以执行以下操作:

import ast
dict = ast.literal_eval(dict)
print dict['value']

用Python2.7在我的机器上试过了,效果很好。在

“dict”似乎是字符串类型的变量,而不是字典。您应该将字符串解析为合适的字典格式(如JSON)。以下代码将解决该问题:

import json
json_string = response.read()
dict = json.loads(json_string)

现在,对于dict['value']你将得到你所需要的。在

相关问题 更多 >