2016-04-15 156 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