pythonhttp请求和JSON内容循环

2024-04-27 00:06:41 发布

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

我正在努力学习Python,但有以下问题: 我在运行这个时遇到一个错误,因为它在数据中看不到'name'属性。 当我从JSON中一个接一个地获取项目时,它就起作用了。但是当我想在一个循环中执行它时,它失败了。 我想我的错误是错误的请求。它无法正确读取JSON并查看属性。在

import requests
import json

def main():

    req = requests.get('http://pokeapi.co/api/v2/pokemon/')

    print("HTTP Status Code: " + str(req.status_code))
    print(req.headers)
    json_obj = json.loads(req.content)

    for i in json_obj['name']:
        print(i)

if __name__ == '__main__':
    main()

Tags: 数据项目nameimportjsonobjget属性
0条回答
网友
1楼 · 发布于 2024-04-27 00:06:41

有两件事:如前所述,迭代json_obj['name']并不真正有意义-请改用json_obj['results']。在

另外,您还可以使用req.json(),这是默认情况下requests库附带的方法。这将把响应转换为一个字典,然后您可以像往常一样迭代(.iteritems()或{},这取决于您使用的是python2还是Python 3)。在

网友
2楼 · 发布于 2024-04-27 00:06:41

因为所有口袋妖怪都保存在关键字results下的列表中,所以您首先需要获取该列表,然后对其进行迭代。在

for result in json_obj['results']:
print(result['name'])
网友
3楼 · 发布于 2024-04-27 00:06:41

您想访问json_objectresults属性的name属性,如下所示:

  for pokemon in json_obj['results']:
    print (pokemon['name'])

我能够猜测您想要访问results键,因为我已经查看了

^{pr2}$

那就是

dict_keys(['count', 'previous', 'results', 'next'])

相关问题 更多 >