Python 如何从json响应中输出特定数据?
我对在python中使用API是相当陌生的,我正在尝试创建一个系统来输出以前赛车比赛的数据。我已经向API发送了请求,但我很难让它只输出一条特定的数据(例如时间、位置)。当我只打印发送的原始JSON数据时,就会得到这个结果Python 如何从json响应中输出特定数据?,python,json,Python,Json,我对在python中使用API是相当陌生的,我正在尝试创建一个系统来输出以前赛车比赛的数据。我已经向API发送了请求,但我很难让它只输出一条特定的数据(例如时间、位置)。当我只打印发送的原始JSON数据时,就会得到这个结果 { “MRData”:{ “赛马场”:{ “种族”:[ { “电路”:{ “地点”:{ “国家”:“西班牙”, “lat”:“41.57”, “地点”:“蒙特梅洛”, “长”:“2.26111” }, “circuitId”:“加泰罗尼亚”, “赛道名称”:“巴塞罗那加泰罗尼
{
“MRData”:{
“赛马场”:{
“种族”:[
{
“电路”:{
“地点”:{
“国家”:“西班牙”,
“lat”:“41.57”,
“地点”:“蒙特梅洛”,
“长”:“2.26111”
},
“circuitId”:“加泰罗尼亚”,
“赛道名称”:“巴塞罗那加泰罗尼亚赛道”,
“url”:”http://en.wikipedia.org/wiki/Circuit_de_Barcelona-Catalunya"
},
“日期”:“2020-08-16”,
“赛车名”:“西班牙大奖赛”,
“轮”:“6”,
“季节”:“2020年”,
“时间”:“13:10:00Z”,
“url”:”https://en.wikipedia.org/wiki/2020_Spanish_Grand_Prix"
}
],
“轮”:“6”,
“季节”:“2020”
},
“限制”:“30”,
“偏移量”:“0”,
“系列”:“f1”,
“总计”:“1”,
“url”:”http://ergast.com/api/f1/2020/6.json",
“xmlns”:”http://ergast.com/mrd/1.4"
}
}
为了掌握API,我只是想输出一个特定种族的简单数据,一旦我能做到这一点,我就能够放大它并输出各种数据。我假设它只需键入print(data['time'])
(如下所示)就可以了,但我收到一条错误消息:
键错误:“时间”
我的源代码:
import requests
response = requests.get("http://ergast.com/api/f1/2020/6.json")
data = response.json()
print (data["time"])
感谢您的帮助
data['time']
如果您有一个平面字典,那么它就可以工作,但是您有一个嵌套的dicts/list结构,因此:
data["MRData"]["RaceTable"]["Races"][0]["time"]
data[“MRData”]
返回另一个dict,其中包含一个键“RaceTable”
。这个键的值也是一个字典,它有一个键“Races”
。这个值是一个种族列表,其中只有一个种族。比赛同样是有时间键的dicts,就像这样
import json
data = """{
"MRData":{
"xmlns":"http://ergast.com/mrd/1.4",
"series":"f1",
"url":"http://ergast.com/api/f1/2020/6.json",
"limit":"30",
"offset":"0",
"total":"1",
"RaceTable":{
"season":"2020",
"round":"6",
"Races":[
{
"season":"2020",
"round":"6",
"url":"https://en.wikipedia.org/wiki/2020_Spanish_Grand_Prix",
"raceName":"Spanish Grand Prix",
"Circuit":{
"circuitId":"catalunya",
"url":"http://en.wikipedia.org/wiki/Circuit_de_Barcelona-Catalunya",
"circuitName":"Circuit de Barcelona-Catalunya",
"Location":{
"lat":"41.57",
"long":"2.26111",
"locality":"Montmeló",
"country":"Spain"
}
},
"date":"2020-08-16",
"time":"13:10:00Z"
}
]
}
}
}"""
jsonData = json.loads(data)
Races是一个数组,在本例中只有一个种族,因此您可以将其设计为[“种族”][0]
print(jsonData["MRData"]["RaceTable"]["Races"][0]["time"])