Разбор словаря с необработанными адресными данными, предоставленными geopy - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь получить названия округов для списка адресов.Для этого я передаю адреса в API геокодирования Google, используя geopy и метод raw.Проблема заключается в разборе словаря, чтобы получить этот кусок данных.

Мне нужна часть, которая находится в administrator_area_level_2, но теперь это список.Я не могу разобрать последовательность элементов в списке, потому что все адреса отформатированы по-разному.Каков наилучший способ разобраться с этим?

import json
places = ['901 Main St Dallas, TX']

geolocator = GoogleV3(api_key='')
location = geolocator.geocode(places, language='en')

print location.raw['address_components']```

This is the result that I am getting:

[{u'long_name': u'Bank of America Plaza', u'types': [u'premise'], u'short_name': u'Bank of America Plaza'}, {u'long_name': u'901', u'types': [u'street_number'], u'short_name': u'901'}, {u'long_name': u'Main Street', u'types': [u'route'], u'short_name': u'Main St'}, {u'long_name': u'Downtown', u'types': [u'neighborhood', u'political'], u'short_name': u'Downtown'}, {u'long_name': u'Dallas', u'types': [u'locality', u'political'], u'short_name': u'Dallas'}, {u'long_name': u'Dallas County', u'types': [u'administrative_area_level_2', u'political'], u'short_name': u'Dallas County'}, {u'long_name': u'Texas', u'types': [u'administrative_area_level_1', u'political'], u'short_name': u'TX'}, {u'long_name': u'United States', u'types': [u'country', u'political'], u'short_name': u'US'}, {u'long_name': u'75202', u'types': [u'postal_code'], u'short_name': u'75202'}]

1 Ответ

1 голос
/ 12 апреля 2019

Вы можете разобрать список следующим образом:

l = []
for i in c:
  for k, v in i.items():
    if k == 'types' and 'administrative_area_level_2' in v:
      l.append(i['long_name'])
print(l)
...