【发布时间】:2020-05-02 04:14:35
【问题描述】:
我目前正在尝试从 get 请求响应中解析一些数据,但一直收到此错误:“TypeError: list indices must be integers or slices, not str”
如果有人能帮助我解决我想要解决的问题,那就太好了。非常感谢您。
import requests
import json
class userList(APIView):
def get(self,request,format=None):
user_data = []
url = 'https://reqres.in/api/users?page=1'
try:
r = requests.get(url).json()
user = {
'id': r['data']['id'],
'email': r['data']['email']
}
user_data.append(user)
return Response({"user_data":user_data}, status=status.HTTP_200_OK)
{
data:{
0:{
'id' : 1
'email' : "george.bluth@reqres.in"
'first_name' : "George"
'last_name' : "Bluth"
'avatar' : "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
}
1:{
'id' : 2
'email' : "apdas@reqres.in"
'first_name' : "apdas"
'last_name' : "loanz"
'avatar' : "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
}
2:{
'id' : 3
'email' : "joan@reqres.in"
'first_name' : "joan"
'last_name' : "homli"
'avatar' : "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
}
}
}
【问题讨论】:
-
能否请您发布回溯?
-
数据是列表的字典吗?将每个
x[y]分开到它自己的行中,这样你就可以看到导致错误的原因,我怀疑你需要r[0]['data']['id'] -
回溯中标记了哪一行。 (您应该在问题中包含回溯。)
-
检查
r['data']并检查它是否有list而不是dict。在这里快速浏览一下您的 json 内容,我认为正确的是使用r['data'][someIndex]['id']例如。你应该使用类似r['data'][0]['id'] -
我得到一个值。如果有多个结果,是否可以迭代结果而不是添加 [0]。 @GeekSilva