1

我正在尝试使用TomTom API检索有关路线时间的信息。

通过提供 API url、API 密钥(您可以通过注册获得)以及源和目的地纬度/经度,我想返回旅行时间。

我以为我从响应中获得了字典字典,并且应该能够使用 - 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 响应看起来像这样......

TomTom 无法根据其收集的信息识别您的身份,也不会尝试这样做。TomTom 将这些信息用于技术诊断、检测欺诈和滥用行为、创建使用报告以及改进其服务。信息仅出于这些目的而保留一段有限的时间,之后将被销毁。TomTom 采用基于行业标准的安全方法来保护信息免遭未经授权的访问。TomTom 不会让任何其他人访问该信息或将其用于任何其他目的,除非按照正当法律程序明确和合法地要求这样做。您可以在以下位置了解更多信息 创建使用报告,并改进其服务。信息仅出于这些目的而保留一段有限的时间,之后将被销毁。TomTom 采用基于行业标准的安全方法来保护信息免遭未经授权的访问。TomTom 不会让任何其他人访问该信息或将其用于任何其他目的,除非按照正当法律程序明确和合法地要求这样做。您可以在以下位置了解更多信息 创建使用报告,并改进其服务。信息仅出于这些目的而保留一段有限的时间,之后将被销毁。TomTom 采用基于行业标准的安全方法来保护信息免遭未经授权的访问。TomTom 不会让任何其他人访问该信息或将其用于任何其他目的,除非按照正当法律程序明确和合法地要求这样做。您可以在以下位置了解更多信息 除非经过正当法律程序明确和合法地要求这样做。您可以在以下位置了解更多信息 除非经过正当法律程序明确和合法地要求这样做。您可以在以下位置了解更多信息http://tomtom.com/privacy。您可以通过访问 http://tomtom.com/support联系 TomTom 。","routes":[{"summary":{"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"},"points":[{"纬度":51.55598,"经度":-0.28216},{"纬度":51.55601,"经度":-0.28292},{"纬度":51.55602,"

感谢您帮助我们完成这项工作。

4

1 回答 1

1

我看到了[after "routes":,所以 routes 是一个数组。

尝试jsonTomTomString['routes'][0]['summary']['totalTimeSeconds']

于 2018-01-08T17:29:59.347 回答