我正在尝试使用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:3​​1Z“ ,“ arrivalTime”:“ 2018-01-08T20:47:28Z”},“ legs”:[{“ summary”:{“ lengthInMeters”:326856,“ travelTimeInSeconds”:13018,“ trafficDelayInSeconds”:818,“ departureTime” ::“ 2018-01-08T17:10:3​​1Z”,“ 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']

07-27 23:26