-1

«Update»Google Matrix API - обратный питона Nonetype ошибка

* Наконец решен вопрос, изменил попробовать, кроме как включить 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 результатов

результат { 'Пондок 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,' Pinang Ranti ': 38099,' Bantar Gebang ': 50778,' Сукабуми ' Утара ': 204 41,' Kembangan Utara ': 17708,' Kwitang ': 25860,' Kuningan Barat ': 31231,' Cilodo ng ': 58879,' Pademangan Barat ': 32585,' Kebon Kelapa ': 23452,' ' Мекар Джайя: 5381 0, 'Kampung Bali': 1188894, 'Pajang': 30008, 'Sukamaju Baru': 53708, 'Benda Baru ': 19965, 'Sukabumi Selatan': 19095, 'Gandaria Utara': 28429, 'Setia Mulya': 635 34, 'Rawajati': 31724, 'Cireundeu': 28220, 'Cimuning': 55712, 'Лебак Бул мы: 273 61, 'Kayuringin Jaya': 47560, 'Kedaung Kali Angke': 19171, 'Pagedangan': 16791, 'Каранг Анярь': 171165, 'Petukangan Selatan': 18959, 'Rawabadak Selatan': 42765, 'Bojong Sari Бару': 26978, 'Padurenan': 53216, 'Jati Mekar': 2594703, 'Jatirang га': 51119}

ответ

0

Решенный вопрос о включении 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 

я пропустил некоторые места с помощью этого решения, хотя.