2016-04-15 93 views
0

我使用这个代码位:如何从Json fromat中读取数据?

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格式的纬度和logitude:http://nominatim.openstreetmap.org/search.php?action=query&format=json&city=Budapest&country=Hungary

名称=结果[0],地址=结果[1],电话=结果[2],收入=结果[3]都很好,而且运作良好,但是,我必须做出错误的决定,因为纬度和经度保持为0.0。 如果我删除线1 intialization,和2,然后我得到和错误

 UnboundLocalError: local variable 'latitude' referenced before assignment 

可能becouse它运行到try块中的某种错误。

我很抱歉这个简单的问题,我对python和JSON很新。

+0

有一个例外,纬度还没有确定没有完成。你也应该明确地设置你想要捕获的异常的类型。 – n00dl3

回答

1

该字典包含在列表中,这对初学者来说非常混乱。如果您在回复中看到[],则必须使用数字索引来引用这些括号内的内容。然后你可以通过关键字引用内部的字典。使用请求来获取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

+1

谢谢,它工作,它错过['lat']和['lon']之前的[0]索引! – Lexandro