Google Matrix API - Python возвращает ошибку, не связанную с типом

"Обновить"

* Наконец-то решена проблема, изменена попытка исключения, кроме включения TypeError, а также использование прохода вместо продолжения в исключением.

"Конец обновления"

Я написал код для поиска расстояния между двумя точками, используя Google Distance Matrix API. Местоположение источника фиксировано, однако для пункта назначения я получаю его из файла xlsx. Я ожидал получить словарь с пунктом назначения в качестве ключа и расстояние в качестве значения. Когда я запускаю код ниже, после определенного цикла я сталкиваюсь с этим кодом ошибки:

TypeError: Expected a lat/lng dict or tuple, but got NoneType

Можете ли вы помочь мне понять причину ошибки? Вот код (pygmap.py):

import googlemaps
import openpyxl

#get origin and destination locations
def cleanWB(file_path):
    destination = list()

    wb = openpyxl.load_workbook(filename=file_path)
    ws = wb.get_sheet_by_name('Sheet1')
    for i in range(ws.max_row):
        cellValueLocation = ws.cell(row=i+2,column=1).value
        destination.append(cellValueLocation)

    #remove duplicates from destination list
    unique_location = list(set(destination))
    return unique_location

def getDistance(origin, destination):
    #Google distance matrix API key
    gmaps = googlemaps.Client(key = 'INSERT API KEY')
    distance = gmaps.distance_matrix(origin, destination)
    distance_status = distance['rows'][0]['elements'][0]['status']
    if distance_status != 'ZERO_RESULTS':
        jDistance = distance['rows'][0]['elements'][0]
        distance_location = jDistance['distance']['value']
    else:
        distance_location = 0

    return distance_location

И я запускаю его, используя этот код:

import pygmap

unique_location = pygmap.cleanWB('C:/Users/an_id/Documents/location.xlsx')
origin = 'alam sutera'
result = {}
for i in range(len(unique_location)):
    try:
        result[unique_location[i]] = pygmap.getDistance(origin, unique_location[i])
    except (KeyError, TypeError):
        pass

Если я напечатаю результаты, это покажет, что я успешно получил 46 результатов

результат {Pondok Pinang: 25905, Jatinegara Kaum: 40453, Serdang: 1623167, Jatiasih: 44737, Tanah Sereal: 77874, Jatikarya: 48399, Duri Kepa: 20716, Mampan g Prapatan ": 31880," Pondok Pucung ": 12592," Johar Baru ": 46791," Karet ": 26889," Bukit Duri ": 34039," Sukamaju ": 55333," Pasir Gunung Selatan ": 42140," Pinangs ia " 30471, "Пинанг Ранти": 38099, "Бантар Гебанг": 50778, "Сукабуми Утара": 204 41, "Кембанган Утара": 17708, "Квитанг": 25860, "Кунинган Барат": 31231, "Силодо нг": 58879, "Падеманган Барат": 32585, "Кебон Келапа": 23452, "Мекар Джая": 5381 0, "Кампунг Бали": 1188894, "Паджанг": 30008, "Сукамаджу Бару": 53708, "Бенда Бару": 19965, "Сукабуми Селатан": 19095, "Гандария Утара": 28429, "Сетия Муля": 635 34, "Раваджати": 31724, "Сиреундеу": 28220, "Кимунинг": 55712, "Лебак Булус": 273 61, "Kayuringin Jaya": 47560, "Kedaung Kali Angke": 19171, "Pagedangan": 16791, "Karang Anyar": 171165, "Petukangan Selatan": 18959, "Rawabadak Selatan": 42765, "Bojong Sari Baru": 269 78, "Падуренан": 53216, "Джати Мекар": 2594703, "Джатиранг га": 51119}

1 ответ

Решение

Решил проблему, чтобы включить TypeError в Try Except, А также использовать pass вместо continue

import pygmap

unique_location = pygmap.cleanWB('C:/Users/an_id/Documents/location.xlsx')
origin = 'alam sutera'
result = {}


#get getPlace
for i in range(len(unique_location)):
    try:
        result[unique_location[i]] = pygmap.getDistance(origin, unique_location[i])
    except (KeyError, TypeError):
        pass

Я пропустил несколько мест, используя это решение, хотя.

Другие вопросы по тегам