2016-06-16 8 views
0

Ich möchte die "long_name" Daten in den "address_components" in der unten angegebenen JSON extrahieren. Die Herausforderung ist, dass ich nur die Daten "long_name" möchte, deren "Typen" "administrative_area_level_2" ist. Bitte lassen Sie mich wissen, wie Sie nur diese spezifischen Daten vorzugsweise in Python extrahieren. DankeSo extrahieren Sie eine bestimmte Daten aus dem Json mit Python

edit: Beachten Sie, dass js ["Ergebnisse"] [0] ["address_components"] [2] ["long_name"] nicht ist, wie ich seinen Wert extrahieren möchte, da ["address_components"] [2] behält für die verschiedenen als Eingabe angegebenen Orte variieren. meine wichtigsten Kriterien sind immer „administrative_area_level_2“ ist

{ 
    "status": "OK", 
    "results": [ 
     { 
      "geometry": { 
       "location_type": "APPROXIMATE", 
       "bounds": { 
        "northeast": { 
         "lat": 12.9177876, 
         "lng": 80.24104 
        }, 
        "southwest": { 
         "lat": 12.875989, 
         "lng": 80.20860669999999 
        } 
       }, 
       "viewport": { 
        "northeast": { 
         "lat": 12.9177876, 
         "lng": 80.24104 
        }, 
        "southwest": { 
         "lat": 12.875989, 
         "lng": 80.20860669999999 
        } 
       }, 
       "location": { 
        "lat": 12.9009877, 
        "lng": 80.2279301 
       } 
      }, 
      "formatted_address": "Sholinganallur, Chennai, Tamil Nadu, India", 
      "place_id": "ChIJGzh_3nlbUjoRGz_-itQtu_8", 
      "address_components": [ 
       { 
        "long_name": "Sholinganallur", 
        "types": [ 
         "sublocality_level_1", 
         "sublocality", 
         "political" 
        ], 
        "short_name": "Sholinganallur" 
       }, 
       { 
        "long_name": "Chennai", 
        "types": [ 
         "locality", 
         "political" 
        ], 
        "short_name": "Chennai" 
       }, 
       { 
        "long_name": "Kanchipuram", 
        "types": [ 
         "administrative_area_level_2", 
         "political" 
        ], 
        "short_name": "Kanchipuram" 
       }, 
       { 
        "long_name": "Tamil Nadu", 
        "types": [ 
         "administrative_area_level_1", 
         "political" 
        ], 
        "short_name": "TN" 
       }, 
       { 
        "long_name": "India", 
        "types": [ 
         "country", 
         "political" 
        ], 
        "short_name": "IN" 
       } 
      ], 
      "partial_match": true, 
      "types": [ 
       "sublocality_level_1", 
       "sublocality", 
       "political" 
      ] 
     } 
    ] 
} 

Die folgenden Daten von „long_name“, deren „Typen“ zu extrahieren, ist der Code, den ich versuche, aber ich bekomme nur ausgegeben, bis Ort. Lassen Sie mich wissen, welche Änderungen ich in meinem Code vornehmen muss.

import urllib 
import json 

apiurl= 'http://maps.googleapis.com/maps/api/geocode/json?' 

while True: 
    address = raw_input('Enter location: ') 
    if len(address) < 1 : break 

    url = apiurl + urllib.urlencode({'sensor':'false', 'address':  address}) 
    print 'Retrieving', url 
    uh = urllib.urlopen(url).read() 

    print 'Retrieved',len(uh),'characters' 
    js = json.loads(str(uh)) 
    print json.dumps(js, indent=4) 
    jayz = js["results"][0] 
    lat = jayz["geometry"]["location"]["lat"] 
    lng = jayz["geometry"]["location"]["lng"] 
    print 'lat',lat,'lng',lng 
    location = jayz['formatted_address'] 
    print location 
    components = js["results"][0]["address_components"] 
    names = [component['long_name'] for component in components if 'administrative_area_level_2' in component['types']] 
    name = names[0] 
    print "District:", name 

Antwort

0

Sie können die Komponenten und die Schlaufe auf sie erhalten und diejenigen, die Sie

js = eval(input_file.read()) 
components = js["results"][0]["address_components"] 
names = [component['long_name'] for component in components if 'administrative_area_level_2' in component['types']] 

Hier Namen long_name aller Komponenten umfassen wird, die administrative_area_level_2 in ihren Typen haben

+0

Hey vielen Dank für Ihre Hilfe. aber kannst du basierend auf meinem Code oben antworten? Vielen Dank im Voraus –

+0

es basiert auf Ihrem Code! js wird dein JSON-Test zu einem dict ausgewertet. Ich kann das aktualisieren – Nikign

+0

Hey Niki hat funktioniert, danke ich schätze deine Hilfe wirklich –

0

Diese ist eine Einlage Lösung, wenn Sie es mögen

ist es in Python

my_long_names = [[component.get("long_name") for component in result.get("address_components") if "administrative_area_level_2" in component.get("types")] for result in data.get("results") ] 
print my_long_names 
+0

Hey vielen Dank für Ihre Hilfe. aber kannst du basierend auf meinem Code oben antworten? Vielen Dank. –

Verwandte Themen