【问题标题】:Python: parsing Google API JSON with if/elif/elsePython:使用 if/elif/else 解析 Google API JSON
【发布时间】:2017-08-12 11:23:55
【问题描述】:

我正在用Python 解析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

如何创建一个循环写入数据if JSON 元素在那里,else 写入一个None

现在总是在有else的地方写一个None

【问题讨论】:

  • 不确定我是否理解。看来您的代码应该可以工作;您是否验证了这些字段确实存在或者您是否正确拼写了它们?你有示例json吗?另一件事是这些键可能嵌套在其他东西中。不看就很难说
  • 您正在使用许多变量名称的方式。我怀疑只是几行之后您将它们填充到数据库查询中,对吧?

标签: python json loops if-statement google-api


【解决方案1】:

我终于找到了解决办法:

        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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2017-07-03
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2012-12-22
    相关资源
    最近更新 更多