исключение итерации списка, чтобы цикл продолжался, геокодирование - PullRequest
1 голос
/ 23 июня 2019

У меня есть список названий мест, и я хочу перебрать его, чтобы получить координаты:

import time
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="xxx")
for a in pl:
    location = geolocator.geocode(a)
    print(location.latitude)
    time.sleep(2)

Теперь это работает для первых нескольких записей, затем я получаю следующую ошибку:

AttributeError: 'NoneType' object has no attribute 'latitude'

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

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Вы можете проверить, не является ли местоположение значением None, а затем получить только атрибут широты от него

import time
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="xxx")
for a in pl:
    location = geolocator.geocode(a)
    #If location is not None, print latitude
    if location:
        print(location.latitude)
    time.sleep(2)
0 голосов
/ 23 июня 2019

Оберните доступ к location.latitude внутри блока try / кроме:

for a in pl:
    location = geolocator.geocode(a)
    try:
        print(location.latitude)
    except AttributeError:
        print('Skipping bad location...')
    time.sleep(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...