我尝试使用TomTom API检索路线时间信息。
通过提供API网址,API密钥(that you can get by registering)以及我想要返回旅行时间的源和目的地纬度/经度。
我以为我从响应中获取字典词典,并且应该能够使用-jsonTomTomString ['路由'] ['摘要'] [&]来访问数据#39; travelTimeInSeconds']
但我得到......
TypeError:list indices必须是整数,而不是str
我的代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ConfigParser
import requests
import json
import sys
import time
import datetime
from urllib import urlopen
# URL to the tomtom api
apiURL = "https://api.tomtom.com/routing/1/calculateRoute/"
# apiKey
apiKey = "get this from link in description"
#[coordinates]
sourceLat = 51.5560241
sourceLon = -0.2817075
destLat = 53.4630621
destLon = -2.2935288
tomtomURL = "%s/%s,%s:%s,%s/json?key=%s" % (apiURL,sourceLat,sourceLon,destLat,destLon,apiKey)
getData = urlopen(tomtomURL).read()
jsonTomTomString = json.loads(getData)
totalTime = jsonTomTomString['routes']['summary']['totalTimeSeconds']
print ("time to destination is: ", totalTime)
JSON响应看起来像这样......
{" formatVersion":" 0.0.12"," copyright":"版权所有2018 TomTom 国际BV。版权所有。这个导航数据是 TomTom International BV的专有版权,仅可使用 根据完全执行的许可协议的条款 在TomTom International BV或授权之间签订 经销商和你自己。如果您还没有签订此类许可证 协议您无权以任何方式使用此数据 应立即将其退回TomTom International BV。","隐私":" TomTom保留信息告诉我们如何以及何时 你使用我们的服务。这包括有关您的设备的信息 正在使用和我们在您使用服务时收到的信息, 例如位置,路线,目的地和搜索查询。 TomTom是 无法根据收集的信息识别您,并且会 不要试图。 TomTom使用技术诊断信息来 检测欺诈和滥用行为,创建使用情况报告并改进其使用情况 服务。该信息仅用于这些目的和a 有限的时间,之后它被摧毁。 TomTom适用 安全方法基于行业标准来保护 防止未经授权访问的信TomTom不会给任何人 否则访问该信息或将其用于任何其他目的,除非 在适当的法律程序后明确和合法地命令这样做。 您可以在http://tomtom.com/privacy找到更多信息。你可以联系 TomTom去了 http://tomtom.com/support""路线":[{"总结" {" lengthInMeters":326856," travelTimeInSeconds&#34 ;:13018" trafficDelayInSeconds":818," departureTime":" 2018-01-08T17:10:31Z"" arrivalTime&#34 ;: " 2018-01-08T20:47:28Z"}"腿":[{"总结" {" lengthInMeters":326856, " travelTimeInSeconds":13018" trafficDelayInSeconds":818," departureTime":" 2018-01-08T17:10:31Z"&# 34; arrivalTime":" 2018-01-08T20:47:28Z"}"点":[{"纬度":51.55598&#34 ;经度": - 0.28216},{"纬度":51.55601"经度": - 0.28292},{"纬度":51.55602&#34 ;经度": - 0.28384},{"纬度":51.55602"经度": - 0.28395},{"纬度":51.55602&#34 ;经度": - 0.28442},{"纬度":51.55603"经度": - 0.28493},{"纬度":51.55603&#34 ;经度": - 0.28564},{"纬度":51.55603"经度": - 0.28611 },
感谢您帮助我们开展工作。
答案 0 :(得分:1)
我在[
之后看到"routes":
,因此路由是一个数组。
尝试jsonTomTomString['routes'][0]['summary']['totalTimeSeconds']