我正在尝试使用TomTom API检索路线时间信息。
通过提供API网址,API密钥(that you can get by registering)以及源和目标纬度/经度,我想返回旅行时间。
我以为我从响应中获得了字典字典,应该可以使用-jsonTomTomString ['routes'] ['summary'] ['travelTimeInSeconds']访问数据
但是我正在...
TypeError:列表索引必须是整数,而不是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”:“ Copyright 2018 TomTom
国际BV。版权所有。该导航数据是
TomTom International BV的专有版权,只能使用
根据完全执行的许可协议的条款
由TomTom International BV或授权
经销商和您自己。如果您尚未签订此类许可
同意您无权以任何方式使用此数据,并且
应立即将其退还给TomTom International
BV。“,” privacy“:” TomTom保留告诉我们如何以及何时的信息
您使用我们的服务。这包括有关您设备的信息
正在使用以及您在使用服务时收到的信息,
例如位置,路线,目的地和搜索查询。 TomTom是
无法根据收集到的信息识别您的身份,并且会
不尝试。 TomTom使用该信息进行技术诊断,以
检测欺诈和滥用,创建使用情况报告,并改善其
服务。仅出于这些目的和出于以下目的保留信息。
有限的时间,之后将其销毁。 TomTom适用
基于行业标准的安全方法来保护
信息以防止未经授权的访问。 TomTom不会给任何人
以其他方式访问该信息或将其用于任何其他目的,除非
根据适当的法律程序,明确并合法地命令这样做。
您可以在http://tomtom.com/privacy上找到更多信息。您可以联系
TomTom前往
http://tomtom.com/support。“,”路线“:[{”摘要“:{” lengthInMeters“:326856,” travelTimeInSeconds“:13018,” trafficDelayInSeconds“:818,” departureTime“:” 2018-01-08T17:10:31Z“ ,“ arrivalTime”:“ 2018-01-08T20:47:28Z”},“ legs”:[{“ summary”:{“ lengthInMeters”:326856,“ travelTimeInSeconds”:13018,“ trafficDelayInSeconds”:818,“ departureTime” ::“ 2018-01-08T17:10:31Z”,“ arrivalTime”:“ 2018-01-08T20:47:28Z”},“点”:[{“纬度”:51.55598,“经度”:-0.28216}, {“纬度”:51.55601,“经度”:-0.28292},{“纬度”:51.55602,“经度”:-0.28384},{“纬度”:51.55602,“经度”:-0.28395},{“纬度”: 51.55602,“经度”:-0.28442},{“纬度”:51.55603,“经度”:-0.28493},{“纬度”:51.55603,“经度”:-0.28564},{“纬度”:51.55603,“经度” ::-0.28611},
感谢您提供帮助以使其正常工作。
最佳答案
我在[
之后看到一个"routes":
,所以路由是一个数组。
尝试jsonTomTomString['routes'][0]['summary']['totalTimeSeconds']