首页 > 解决方案 > 是否有 python 函数来搜索 json 的键

问题描述

我正在使用谷歌地图 API 为“administrative_area_level_1”查找“long_name”,为一堆不同的纬度和经度查找“country”。

如何动态提取它们?

JSON 每次看起来都不一样。以下是某个位置的一些 JSON 示例。

    {'plus_code': {'compound_code': 'F68J+XJ Santander, Spain',
  'global_code': '8CMRF68J+XJ'},
 'results': [{'address_components': [{'long_name': '38',
     'short_name': '38',
     'types': ['street_number']},
    {'long_name': 'Avenida de la Reina Victoria',
     'short_name': 'Av de la Reina Victoria',
     'types': ['route']},
    {'long_name': 'Santander',
     'short_name': 'Santander',
     'types': ['locality', 'political']},
    {'long_name': 'Cantabria',
     'short_name': 'S',
     'types': ['administrative_area_level_2', 'political']},
    {'long_name': 'Cantabria',
     'short_name': 'Cantabria',
     'types': ['administrative_area_level_1', 'political']},
    {'long_name': 'Spain',
     'short_name': 'ES',
     'types': ['country', 'political']},
    {'long_name': '39005', 'short_name': '39005', 'types': ['postal_code']}],
   'formatted_address': 'Av de la Reina Victoria, 38, 39005 Santander, Cantabria, Spain',
   'geometry': {'location': {'lat': 43.4674468, 'lng': -3.7681911},
    'location_type': 'ROOFTOP',
    'viewport': {'northeast': {'lat': 43.46879578029149,
      'lng': -3.766842119708497},
     'southwest': {'lat': 43.4660978197085, 'lng': -3.769540080291502}}},
   'place_id': 'ChIJa7pGPwRLSQ0RiO12N_vlLlk',
   'plus_code': {'compound_code': 'F68J+XP Santander, Spain',
    'global_code': '8CMRF68J+XP'},
   'types': ['establishment', 'point_of_interest', 'tourist_attraction']},
  {'address_components': [{'long_name': '1',
     'short_name': '1',
     'types': ['street_number']},
    {'long_name': 'Calle Familia Real',
     'short_name': 'Calle Familia Real',
     'types': ['route']},
    {'long_name': 'Santander',
     'short_name': 'Santander',
     'types': ['locality', 'political']},
    {'long_name': 'Cantabria',
     'short_name': 'S',
     'types': ['administrative_area_level_2', 'political']},
    {'long_name': 'Cantabria',
     'short_name': 'Cantabria',
     'types': ['administrative_area_level_1', 'political']},
    {'long_name': 'Spain',
     'short_name': 'ES',
     'types': ['country', 'political']},
    {'long_name': '39005', 'short_name': '39005', 'types': ['postal_code']}],
   'formatted_address': 'Calle Familia Real, 1, 39005 Santander, Cantabria, Spain',
   'geometry': {'location': {'lat': 43.4681601, 'lng': -3.768483299999999},
    'location_type': 'ROOFTOP',
    'viewport': {'northeast': {'lat': 43.46950908029149,
      'lng': -3.767134319708497},
     'southwest': {'lat': 43.4668111197085, 'lng': -3.769832280291502}}},
   'place_id': 'ChIJtWZvjxlLSQ0Re6B7ZO_bD3Y',
   'plus_code': {'compound_code': 'F69J+7J Santander, Spain',
    'global_code': '8CMRF69J+7J'},
   'types': ['street_address']},
  {'address_components': [{'long_name': '1',
     'short_name': '1',
     'types': ['street_number']},

非常感谢您的帮助。

标签: python

解决方案


为什么不看看熊猫?

import pandas as pd
from pandas.io.json import json_normalize
json_normalize(your_json)

然后使用 pandas API 进行动态提取?通过基本上从您的 json 对数据框进行查询?如果您在谈论大数据,您可能还想看看 PySpark。

https://hackersandslackers.com/json-into-pandas-dataframes/

https://spark.apache.org/docs/latest/sql-data-sources-json.html


推荐阅读