Я использую Geopy для вызова разных адресов, чтобы увидеть, к каким городам и районам они принадлежат.
from geopy.geocoders import GoogleV3
import json
places = '1238 Davie St, Vancouver, BC'
geolocator = GoogleV3(api_key='')
location = geolocator.geocode(places, language='en')
c = location.raw['address_components']
print c
counties = [c['long_name'] for c in c if 'neighborhood' in c['types']]
localities = [c['long_name'] for c in c if 'locality' in c['types']]
print counties, localities
Это работает для округов, но не населенных пунктов (городов).
[{u'long_name': u'1238', u'types': [u'street_number'], u'short_name': u'1238'}, {u'long_name': u'Davie Street', u'types': [u'route'], u'short_name': u'Davie St'}, {u'long_name': u'Central Vancouver', u'types': [u'neighborhood', u'political'], u'short_name': u'Central Vancouver'}, {u'long_name': u'Vancouver', u'types': [u'locality', u'political'], u'short_name': u'Vancouver'}, {u'long_name': u'Greater Vancouver', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Greater Vancouver'}, {u'long_name': u'British Columbia', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'BC'}, {u'long_name': u'Canada', u'types': [u'country', u'political'], u'short_name': u'CA'}, {u'long_name': u'V6E 1N3', u'types': [u'postal_code'], u'short_name': u'V6E 1N3'}]
[u'Central Vancouver']
---> 32 localities = [c['long_name'] for c in c if 'locality' in c['types']]
33 print counties, localities
TypeError: string indices must be integers
Не уверен, почему я получаю эту ошибку. Я также хочу иметь возможность передавать столбец Pandas вместо ввода статического адреса, есть ли удобный способ сделать это?