Ошибка геолокации с Geopy, Nominatim: TypeError: объект 'NoneType' не может быть подписан - PullRequest
1 голос
/ 02 июня 2019

Я пытаюсь использовать модуль Geopy, функцию Nominatim, чтобы геолокализовать список адресов (содержится в файле CSV). Вот мой код:

import pandas as pd

from geopy.geocoders import Nominatim 

df = pd.read_csv('incidenti genova 3.csv', delimiter=';', error_bad_lines=False)
indirizzi = df.descrizione_strada

nom=Nominatim(user_agent="my-application") 

coordinate=[]

for element in indirizzi:
    print(element)
    target1=nom.geocode(element)[1]
    print(target1)
    coordinate.append(target1)

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

TypeError Traceback (самый последний вызов последняя)
in ()
13 отпечаток (элемент)
14
---> 15 target1 = nom.geocode (элемент) [1]
16 отпечаток (target1)
17 координата.append (target1)

TypeError: объект 'NoneType' не может быть подписан

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

Как мне это сделать?

1 Ответ

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

Ну, вам не хватает одной из очень важных основ кодирования, то есть try... except операторов

Вы, вероятно, хотите сделать что-то вроде этого:

for element in indirizzi:
  try: 
   print(element)
   target1=nom.geocode(element)[1]
   print(target1)
   coordinate.append(target1)
  except NoneType:
   pass
...