2017-08-12 55 views
1

我正在使用Python解析Google API JSON,並且像樹上掛載太高的貓,現在我發現自己處於困境。Python:使用if/elif/else解析Google API JSON

的代碼工作,唯一的問題是2 elif我使用:

 if response_data2['status'] == 'OK': 
      Googleplace_id = response_data2['result']['place_id'] 
      Googleid = response_data2['result']['id'] 
      GoogleName = response_data2['result']['name'] 
      for types in response_data2['result']['address_components']: 
       field = types.get('types', []) 
       if 'street_number' in field: 
        GoogleStreet_Number = types['long_name'] 
       elif 'street_number' not in field: 
        GoogleStreet_Number = None 
       if 'route' in field: 
        GoogleStreet = types['long_name'] 
       if 'postal_code' in field: 
        GooglePostal_Code = types['long_name'] 
       if 'locality' in field: 
        GoogleCity = types['long_name'] 
       elif 'locality' not in field: 
        GoogleCity = None 
       if 'administrative_area_level_1' in field: 
        GoogleArea1 = types['long_name'] 
       if 'administrative_area_level_2' in field: 
        GoogleArea2 = types['long_name'] 
       if 'country' in field: 
        GoogleCountry = types['long_name'] 
       if 'country' in field: 
        GoogleCountryCode = types['short_name'] 

我的腳本輕輕填充數據庫,但'street_number''locality'總是NULL。這顯然是因爲if/elif不起作用,並且腳本在這兩種情況下僅考慮2 elif

如何創建寫入數據的循環ifJSON元素在那裏,else,寫入None

現在是總是None那裏有一個else

+0

不知道我理解。看起來你的代碼應該工作;你是否證實這些字段實際存在或者你拼寫正確?你有沒有例子json?另一件事是這些鍵可能嵌套在別的東西。很難說沒有看到它 – roganjosh

+0

您正在使用許多變量名稱的方式。我懷疑只是幾行後,你把他們填入數據庫查詢,對吧? – Tomalak

回答

0

我終於找到了解決辦法:

 if response_data2['status'] == 'OK': 
      Googleplace_id = response_data2['result'].get("place_id", None) 
      Googleid = response_data2['result'].get("id", None) 
      GoogleName = response_data2['result'].get("name", None) 
      for e in response_data2['result']['address_components']: 
       for t in e['types']: 
        long_field[t] = e['long_name'] 
        short_field[t] = e['short_name'] 

        GoogleStreet_Number = long_field.get("street_number", None) 
        GoogleStreet = long_field.get("route", None) 
        GooglePostal_Code = long_field.get("postal_code", None) 
        GoogleCity = long_field.get("locality", None) 
        GoogleArea1 = long_field.get("administrative_area_level_1", None) 
        GoogleArea2 = long_field.get("administrative_area_level_2", None) 
        GoogleCountry = long_field.get("country", None) 
        GoogleCountryCode = short_field.get("country", None)