Python - 从 JSON 响应中提取数据(使用 TomTom api)
Posted
技术标签:
【中文标题】Python - 从 JSON 响应中提取数据(使用 TomTom api)【英文标题】:Python - extracting data from JSON response (using TomTom api) 【发布时间】:2018-01-08 17:19:33 【问题描述】:我正在尝试使用TomTom API 检索有关路线时间的信息。
通过提供 API url、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":"版权 2018 TomTom 国际BV。版权所有。该导航数据是 TomTom International BV 的专有版权,仅可使用 根据完全执行的许可协议的条款 TomTom International BV 或授权的 经销商和您自己。如果您尚未签订此类许可 同意您无权以任何方式使用这些数据,并且 应立即将其退还给 TomTom International BV.","privacy":"TomTom 保存的信息告诉我们如何以及何时 您使用我们的服务。这包括有关您的设备的信息 正在使用以及我们在您使用服务时收到的信息, 例如位置、路线、目的地和搜索查询。汤姆汤姆是 无法根据其收集的信息识别您的身份,并将 不要尝试。 TomTom 使用这些信息进行技术诊断,以 检测欺诈和滥用,创建使用报告,并改进其 服务。信息仅用于这些目的并用于 有限的时间,然后销毁。 TomTom 适用 基于行业标准的安全方法来保护 防止未经授权的访问的信息。 TomTom 不会给任何人 否则访问信息或将其用于任何其他目的,除非 根据正当法律程序,明确和合法地命令这样做。 您可以通过http://tomtom.com/privacy 了解更多信息。您可以联系 TomTom 去 http://tomtom.com/support.","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":["latitude":51.55598,"longitude":-0.28216, "latitude":51.55601,"longitude":-0.28292,"latitude":51.55602,"longitude":-0.28384,"latitude":51.55602,"longitude":-0.28395,"latitude": 51.55602,"经度":-0.28442,"纬度":51.55603,"经度":-0.28493,"纬度":51.55603,"经度":-0.28564,"纬度":51.55603,"经度" :-0.28611,
感谢您帮助解决此问题。
【问题讨论】:
【参考方案1】:我在"routes":
之后看到一个[
,所以 routes 是一个数组。
试试jsonTomTomString['routes'][0]['summary']['totalTimeSeconds']
【讨论】:
我也没有在 JSON 中看到“totalTimeSeconds”,除非它在截止之后的某个地方。所以应该是jsonTomTomString['routes'][0]['summary']['travelTimeInSeconds']
以上是关于Python - 从 JSON 响应中提取数据(使用 TomTom api)的主要内容,如果未能解决你的问题,请参考以下文章
从 Tone Analyser 的 JSON 响应中的字典列表中提取数据 [重复]