我正在使用此代码位:
from flask import Flask, jsonify, abort, request
from datetime import datetime
import json
import cx_Oracle
import requests
/*Some other code bits*/
longitude = 0.0
latitude = 0.0
try:
params = {
'action': 'query',
'country': 'Hungary',
'city': 'Budapest',
'format' : 'json',
}
res = requests.get('http://nominatim.openstreetmap.org/search.php', params=params)
page = res.json()
latitude = page['lat']
longitude =page['lon']
except:
pass
return jsonify(name=result[0],address=result[1],phone=result[2],income=result[3],Latitude = latitude, Longitude=longitude)
我正试图从这个JSON格式的链接中获取纬度和逻辑:http://nominatim.openstreetmap.org/search.php?action=query&format=json&city=Budapest&country=Hungary
name = result [0],address = result [1],phone = result [2],income = result [3]很好,并且运作良好,但是,我必须做错了因为纬度和经度仍然存在0.0。 如果我从第1行和第2行删除初始化,那么我得到错误
UnboundLocalError: local variable 'latitude' referenced before assignment
可能因为它在try块中遇到某种错误。
我很抱歉这个简单的问题我对python和JSON很新。
答案 0 :(得分:1)
字典包含在列表中,这对初学者来说非常困惑。如果在响应中看到[],则必须使用数字索引来引用这些括号内的内容。然后你可以通过关键字引用里面的dict。使用请求获取JSON。
import requests
r = requests.get('http://nominatim.openstreetmap.org/search.php?action=query&format=json&city=Budapest&country=Hungary').json()
print(r[0]['lon'])
print(r[0]['lat'])
输出: 19.0404707 47.4983815
处理完成,退出代码为0