2017-08-12 10 views
1

Google API JSONPythonで解析していて、ツリー上に高すぎる高さの猫のように、今は自分自身が難しい状況に陥っています。Python:Google API JSONをif/elif/elseで解析する

コードが動作している、唯一の問題は、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つのケースで2 elifだけを検討しているためです。

データを書き込むループを作成する方法ifJSON要素がある場合、elseNoneと書き込みます。

は今は常にelse

+0

ない私は理解してくださいを。あなたのコードはうまくいくはずです。それらのフィールドが実際に存在すること、またはそれらのフィールドが正しく綴られていることを確認しましたか?あなたはjsonの例がありますか?別のことは、それらのキーが他のものの中にネストされている可能性があるということです。それを見ずに言うのは難しい – roganjosh

+0

あなたは多くの変数名に道を使用しています。私はちょうどあなたがデータベースクエリにそれらを記入するちょうど少数のラインを疑う、右か? – Tomalak

答えて

0

があるNoneを書いている私は最終的に解決策が見つかりました:

 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) 
関連する問題