我想从this API获取时刻表数据。返回的数据是JSON格式的。我用的是python。在
我尝试了以下代码:
snav_timetable_url = "https://booking.snav.it/api/v1/rates/1040/2019-02-25/1042/2019-02-25?lang=1"
fh = urllib.request.urlopen(snav_timetable_url)
snav_timetable = fh.read().decode('utf-8')
fh.close()
snav_timetable_data = json.loads(snav_timetable[len(snav_timetable)-2])
snav_timetable_data_cleaned = []
for departure in snav_timetable_data ['data']['ratesOutward']:
snav_timetable_data_cleaned.append({
'COMPANY': 'Snav',
'CODICE CORSA': departure['coditinera'],
'DEPARTURE DATE TIME': departure['strDatapart'],
'ARRIVAL DATE TIME': departure['strDatarri']
})
但会出错
^{pr2}$我做错什么了?在
您的错误是试图从响应中解码单个字符:
单个字符不是JSON文档,因此正确地说,解析失败。你想解码整个回答:
^{pr2}$您可能希望切换到使用^{} library 而在这里,它使来自API的loading JSON responses变得微不足道:
注意,我必须更正arrival date time引用中的一个错误;它是}。在
strDataarri
,而不是{你把strdatarri拼错了。在
此外,请求库可能会使它看起来更干净。在
输出:
^{pr2}$如果您使用的是python3.x,最好使用
requests
库。在这样就不会有任何错误,可以继续解析。在
^{pr2}$相关问题 更多 >
编程相关推荐