GeocoderDotUS Geopy (объект NoneType не является итерируемым)

import csv
from geopy import geocoders
import time

g = geocoders.GeocoderDotUS()

spamReader = csv.reader(open('locations.csv', 'rb'), delimiter='\t', quotechar='|')

f = open("output.txt",'w')

for row in spamReader:
a = ', '.join(row)
#exactly_one = False
time.sleep(1)


place, (lat, lng) = g.geocode(a)


b = str(place) + "," + "[" + str(lat) + "," + str(lng) + "]" + "\n"
print b
f.write(b)

Я действительно не могу определить, почему я получаю

Traceback (последний последний вызов): файл "C:\Users\Penguin\workspace\geocode-nojansdatabase\src\yahoo.py", строка 17, на месте, (широта, долгота) = g.geocode(a ) TypeError: объект 'NoneType' не является итерируемым

Я проверил, чтобы убедиться, что в a есть значение до того, как был сделан вызов geocode(a). Может совпадение не найдено? Если это так, я думаю, мне просто нужно добавить оператор if not b then. Кто-нибудь знает об этом больше?

Я вижу, что добавление

a = ', '.join(row)
print(a)

Уступает: 178 Connection Rd Pomona QLD


person Eae    schedule 29.05.2012    source источник
comment
Копия полной трассировки/ошибки поможет определить место ошибки, можете ли вы добавить это к своему вопросу.   -  person Levon    schedule 30.05.2012
comment
spamReader, по-видимому, не является итерируемым, то есть нет строк для циклического повторения. Вы уверены, что locations.csv находится в том же каталоге, что и ваш скрипт?   -  person Junuxx    schedule 30.05.2012
comment
Да. Я нахожусь в среде eclipse, и он говорит, что там есть location.csv.   -  person Eae    schedule 30.05.2012
comment
Первая запись в location.csv: 178 Connection Rd Pomona QLD.   -  person Eae    schedule 30.05.2012
comment
a затем содержит это значение 178 Connection Rd...   -  person Eae    schedule 30.05.2012
comment
Если у a есть значение, и я вижу его в отладчике, значит, цикл for был введен хотя бы один раз... Нет?   -  person Eae    schedule 30.05.2012
comment
Итак, я вижу, вы запрашиваете всю трассировку Traceback (последний последний вызов): Файл C:\Users\Penguin\workspace\geocode-nojansdatabase\src\yahoo.py, строка 17, в ‹module› место, (широта, lng) = g.geocode(a) TypeError: объект 'NoneType' не является итерируемым   -  person Eae    schedule 30.05.2012
comment
Я попытался включить дополнительную обработку исключений, которая по-прежнему дает то же самое исключение.   -  person Eae    schedule 30.05.2012


Ответы (1)


>>> a, (b, c) = None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>> a, (b, c) = ('foo', None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable

Ваша догадка верна. Проверьте перед распаковкой.

person Ignacio Vazquez-Abrams    schedule 30.05.2012
comment
Итак, мне интересно, как узнать, где находится базовое имя пакета для GeocoderDotUS. Либо какое-то исключение, либо GeocoderDotUS не работает. - person Eae; 30.05.2012
comment
Я действительно спрашиваю, я думаю, кто-нибудь знает, что добавить в блок, кроме этого кода? - person Eae; 30.05.2012
comment
... Как вы ожидаете выяснить, что пошло не так, только с исключением? - person Ignacio Vazquez-Abrams; 30.05.2012
comment
Это и моя точка зрения. Как обрабатываются исключения для GeocoderDotUS, вот что я спрашиваю... - person Eae; 31.05.2012
comment
Они не исключения, как вы видели. - person Ignacio Vazquez-Abrams; 31.05.2012
comment
ХОРОШО. Итак, у вас есть какие-либо предложения о том, как справиться с [error=2: не удалось найти этот адрес! простите]? - person Eae; 01.06.2012
comment
Мое намерение состояло в том, чтобы пропустить этот адрес и перейти к следующему. - person Eae; 01.06.2012
comment
Мое предложение состояло бы в том, чтобы просто посмотреть на возвращаемое значение. - person Ignacio Vazquez-Abrams; 01.06.2012
comment
Черт... Я ищу синтаксис Python. Не проверяйте. - person Eae; 01.06.2012
comment
давайте продолжим это обсуждение в чате - person Eae; 01.06.2012