我正在努力处理从 API 获得的 json 数据。我已经进入了几个 api url 来获取我的数据,并将其存储在一个空列表中。然后我想去掉所有显示“声誉”的字段,我只对这个数字感兴趣。在这里查看我的代码:
import json
import requests
f = requests.get('my_api_url')
if(f.ok):
data = json.loads(f.content)
url_list = [] #the list stores a number of urls that I want to request data from
for items in data:
url_list.append(items['details_url']) #grab the urls that I want to enter
total_url = [] #stores all data from all urls here
for index in range(len(url_list)):
url = requests.get(url_list[index])
if(url.ok):
url_data = json.loads(url.content)
total_url.append(url_data)
print(json.dumps(total_url, indent=2)) #only want to see if it's working
到目前为止,我很高兴,可以输入所有网址并获取数据。在下一步中,我遇到了麻烦。上面的代码为我输出了以下json数据:
[
[
{
"id": 316,
"name": "storabro",
"url": "https://storabro.net",
"customer": true,
"administrator": false,
"reputation": 568
}
],
[
{
"id": 541,
"name": "sega",
"url": "https://wedonthaveanyyet.com",
"customer": true,
"administrator": false,
"reputation": 45
},
{
"id": 90,
"name": "Villa",
"url": "https://brandvillas.co.uk",
"customer": true,
"administrator": false,
"reputation": 6
}
]
]
但是,我只想打印出声望,我无法让它工作。如果我在我的代码中使用print(total_url['reputation'])
它不起作用并说"TypeError: list indices must be integers or slices, not str"
,如果我尝试:
for s in total_url: print(s['reputation'])
我得到相同的 TypeError。
感觉我已经尝试了所有方法,但在网上找不到任何可以帮助我的答案,但我明白我还有很多东西要学,而且我的错误对这里的某些人来说是显而易见的。这似乎与我用 Python 完成的其他事情非常相似,但这次我被卡住了。澄清一下,我期待输出类似于:[568, 45, 6]
也许我从一开始就使用了错误的方法来做到这一点,这就是为什么它对我来说并不完全有效。十月份开始用 Python 编写代码,这对我来说仍然很新,但我想学习。谢谢大家!
看起来您total_url
是一个列表列表,因此您可以编写如下函数:
def get_reputations(data):
for url in data:
for obj in url:
print(obj.get('reputation'))
get_reputations(total_url)
# output:
# 568
# 45
# 6
如果您不想首先使用列表列表,您可以extend
使用每个结果的列表而不是append
用于构造的表达式total_url
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句