我需要解析从API请求的JSON文件中的数据。API文档提供了一个关于如何实现它的示例代码,但是他们的方法会导致以下错误:
Traceback (most recent call last):
File "testing2.py", line 11, in <module>
for flight in api_response['results']:
KeyError: 'results'
我花了很多时间寻找可能的原因,但我找不到适合我的解决方案。Python文件如下所示:
import requests
params = {
'access_key': my_access_key'
}
results = requests.get('http://api.aviationstack.com/v1/flights?access_key=my_access_key&airline_name=Air%20India&flight_number=560')
api_response = results.json()
for flight in api_response['results']:
if (flight['live']['is_ground'] is False):
print(u'%s flight %s from %s (%s) to %s (%s) is in the air.' % (
flight['airline']['name'],
flight['flight']['iata'],
flight['departure']['airport'],
flight['departure']['iata'],
flight['arrival']['airport'],
flight['arrival']['iata']))
我已经能够通过print(api_response)
读取数据,但是我无法解析任何数据,因为键“results”似乎根本不存在
编辑:
这是直接转到URL或print(api_response)
的结果,这是一大块文本:
{“分页”:{“限制”:100,“偏移”:0,“计数”:4,“总计”:4},“数据”:{“航班日期”:“2020-09-02”,“航班状态”:“着陆”,“起飞”:{“机场”:“英迪拉·甘地国际”,“时区”:“亚洲/加尔各答”,“国际航空运输协会”:“DEL”,“国际民航组织”:“VIDP”,“航站楼”:“3”,“登机口”:“33”,“延误”:4,“计划”:“2020-09-02T07:15:00”,“预计”:“2020-09-02T07:15+00:00”,“实际”:“2020-09-02T07:18:00+00:00”,“预计跑道”:“2020-09-02T07:18:00+00:00”,“实际跑道”:“2020-09-02T07:18:00+00:00”;“抵达”:{“机场”:“海得拉巴机场”,“时区”:“亚洲/加尔各答”,“国际航空运输协会”:“HYD”,“国际民航组织”:“VOHS”,“航站楼”:“1”,“登机口”:空,“行李”:空,“延误”:2,“计划”:“2020-09-02T09:10+00:00”,“预计”:2020-09-02T09:10:00+00:00,“实际”:“2020-09-02T09:09:00+00:00”,“预计跑道”:“2020-09-02T09:09:00+00:00”,“实际跑道”:“2020-09-02T09:09:00+00:00”;“航空公司”:“名称”:“印度航空公司”,“国际航空运输协会”:“AI”,“国际民航组织”:“AIC”;“航班号”:“560”,“国际航空运输协会”:“AI560”,“国际民航组织”:“AIC560”,“代码共享”;“空号”;“飞机”;“注册号”:“国际航空运输协会”,“国际民航组织”;“A20M”:“,”icao24“:”800C4B“,”实况“:”空“,”航班日期“:”2020-09-01“,”航班状态“:”着陆“,”起飞“,”机场“:”蒂鲁帕蒂“,”时区“:”亚洲/加尔各答“,”国际航空运输协会“:”TIR“,”icao“:”VOTP“,”航站楼“:”空“,”登机口“:”空“,”延误“,”空“,”预定“:”2020-09-01T10:20:00+00:00”,“预计“,”2020-09-01T10:00+00:00+00”,“实际“,”预计跑道“,”“2020-09-01T10:06:00+00:00”,“实际跑道”:“2020-09-01T10:06:00+00:00”;“抵达”:“机场”:“海得拉巴机场”,“时区”:“亚洲/加尔各答”,“国际航空运输协会”:“HYD”,“国际民航组织”:“VOHS”,“航站楼”:“3”,“登机口”:空,“行李”:空,“延误”:空,“计划”:“2020-09-01T11:40+00:00”,“预计”:“2020-09-01T11:40+00:00”,“实际”:“2020-09-01T10:51+00”,“预计跑道”:“2020-09-01T10:51:00+00:00”,“实际跑道”:“2020-09-01T10:51:00+00:00”,“航空公司”:“名称”:“印度航空公司”,“国际航空运输协会”:“AI”,“国际民航组织”:“AIC”},“航班”:“编号”:“560”,“国际航空运输协会”:“AI560”,“国际民航组织”:“AIC560”,“代码共享”:空},“飞机”:空,“实时”:空},{“航班日期”:“2020-09-01”,“航班状态”:“着陆”,“起飞”:“机场”:“空”英迪拉·甘地国际,“时区”:“亚洲/加尔各答”,“国际航空运输协会”:“DEL”,“国际民航组织”:“VIDP”,“航站楼”:“3”,“登机口”:“29B”,“延迟”:“6”,“计划”:“2020-09-01T06:50:00+00:00”,“预计”:“2020-09-01T06:50:00+00:00”,“实际”:“2020-09-01T06:56:00+00:00”,“预计跑道”:“2020-09-01T06:56:00+00:00”,“实际跑道”:“2020-09-01T06:56:00+00”“:”海得拉巴机场“,”时区“,”亚洲/加尔各答“,”国际航空运输协会“,”HYD“,”国际民航组织“,”VOHS“,”航站楼“,”2“,”登机口“,”行李“,”空区“,”延误“,”空区“,”计划“,”2020-09-01T09:20:00+00:00“,”实际“,”空区“,”预计跑道“,”空区“,”航空公司“,”名称“,”印度航空公司“,”国际航空运输协会“,”AI“,”国际民航组织“:”AIC“,”航班“,”号“:”560”,“iata”:“AI560”,“icao”:“AIC560”,“代码共享”:null},“飞机”:{“注册”:“VT-EXM”,“iata”:“A20N”,“icao”:“A20N”,“icao24”:“800C4B”},“直播”:null},{“航班日期”:“2020-09-01”,“航班状态”:“着陆”,“起飞”:{“机场”:“海得拉巴机场”,“时区”:“亚洲/加尔各答”,“iata”:“HYD”,“icao”:“VOHS”,“航站楼”:null,“登机口”:null,“延误”:null,“预定”:“2020-09-01T12:45:00+00:00”,“预计”:“2020-09-01T12:45:00+00:00”,“实际”:“2020-09-01T12:41:00+00:00”,“预计跑道”:“2020-09-01T12:41:00+00:00”,“实际跑道”:“2020-09-01T12:41:00+00:00”;“抵达”:{“机场”:“英迪拉·甘地国际”,“时区”“亚洲/加尔各答”,“国际航空运输协会”:“DEL”,“国际民航组织”:“VIDP”,“航站楼”:“3”,“登机口”:空,“行李”:空,“延误”:空,“计划”:“2020-09-01T14:55:00+00:00”,“预计”:“2020-09-01T14:55:00+00:00”,“实际”:“2020-09-01T14:42:00+00:00”,“预计跑道”:“2020-09-01T14:42:00+00:00”;“实际跑道”:“2020-09-01T14:42:00+00:00”;“航空公司名称”:“印度航空公司”,“国际航空运输协会”:,“国际民航组织”:“AIC”},“航班”:{“号码”:“560”,“国际航空运输协会”:“AI560”,“国际民航组织”:“AIC560”,“代码共享”:null},“飞机”:null,“现场”:null}]}
试试这个。它访问键
data
,而不是键results
(该键可能在响应中不存在),并且在访问飞行对象中的live
键时不会引发TypeError
,该键可能为空(当它在地面上时)相关问题 更多 >
编程相关推荐