Python обратное геокодирование для извлечения почтового индекса из "googlemaps" - PullRequest
0 голосов
/ 06 марта 2020

Я пытался повернуть геокодирование в формате csv lat и long, чтобы найти почтовые индексы, соответствующие координатам. У меня есть API от Google, и я пытался использовать pygeocoder, однако он не может распознать API (см. Код ниже).

import pandas as pd
from pygeocoder import Geocoder 
import numpy as np



lndn = pd.read_csv(r'my file pathway', sep=',')

results = Geocoder.reverse_geocode(lndn['lat'][0], lndn['lng'][0])

При каждом получении сообщения об ошибке:

GeocoderError: Error REQUEST_DENIED
Query: https://maps.google.com/maps/api/geocode/json?region=&latlng=51.495290%2C-0.166223&sensor=false&bounds=&language=

I затем использовал пакет googlemaps:

import googlemaps 
import pandas as pd

gmaps = googlemaps.Client(key='my API')

lndn = pd.read_csv(r'my file pathway', sep=',')

results = gmaps.reverse_geocode((lndn['lat'][0], lndn['lng'][0]))

results 

Это сработало, однако просто напечатало всю информацию, т.е.

[{u'address_components': [{u'long_name': u'35',
    u'short_name': u'35',
    u'types': [u'street_number']},
   {u'long_name': u'Walton Street',
    u'short_name': u'Walton St',
    u'types': [u'route']},
   {u'long_name': u'Chelsea',
    u'short_name': u'Chelsea',
    u'types': [u'neighborhood', u'political']},
   {u'long_name': u'London',
    u'short_name': u'London',
    u'types': [u'postal_town']},
   {u'long_name': u'Greater London',
    u'short_name': u'Greater London',
    u'types': [u'administrative_area_level_2', u'political']},
   {u'long_name': u'England', etc............

Я вижу, что там есть почтовый индекс. Есть ли способ извлечь и распечатать просто почтовый индекс из всего этого?

1 Ответ

0 голосов
/ 06 марта 2020

если вы не возражаете против использования библиотек ...

import json, ast
x = ast.literal_eval(json.dumps(vals))

for i in x:
    print(i)

Это выведет на экран словарь без уникода 'u' из всех значений.

...