我使用的是Google Distance Matrix API,我得到的回复是JSON:
{
"destination_addresses" : [ "Chandigarh, India" ],
"origin_addresses" : [ "Delhi, India" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "244 km",
"value" : 243506
},
"duration" : {
"text" : "3 hours 54 mins",
"value" : 14069
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
我想从JSON,destination_address
,origin_address
,distance
,duration
和status
获取以下值。这是我正在尝试的代码:
import requests as r
import json
a = r.get("https://maps.googleapis.com/maps/api/distancematrix/json?origins=Delhi&destinations=Chandigarh&key=key")
#text form of a
tfa = a.text
print(tfa)
with open('data.json','w') as outfile:
json.dump(tfa,outfile)
json_data = json.loads(tfa)
print(json_data["destination_addresses"])
print(json_data["origin_addresses"])
print(json_data["rows"][0]["elements"][0]["distance"])
print(json_data["rows"]["elements"]["duration"])
我收到的输出给出了目的地原点和距离,但是当我尝试抓住持续时间时出现错误,distance
内的值也打印为'text':'244km','value':23432
,但我只是想要得到的价值不是他们的标签。有没有办法做到这一点?也可以限制在<{em> {/ 1>}元素中提取的值(因为我只想要文本而不是值)?
答案 0 :(得分:3)
print(json_data["rows"][0]["elements"][0]["distance"]["value"])
将["value"]
添加到当前代码中只会显示该值。
print(json_data["rows"]["elements"]["duration"])
您尝试从与距离相同的级别获取某些内容,但您忘记了此行中的[0]
。您基本上可以复制并粘贴打印距离值的代码,但将distance
替换为duration
:
print(json_data["rows"][0]["elements"][0]["duration"]["value"])