Как закодировать широту и долготу с помощью urllib.parse.urlencode?

Я использую Google API для получения json-данных о ближайших кофейнях. Для этого мне нужно закодировать широту и долготу в URL.

Требуемый URL: https://maps.googleapis.com/maps/api/place/textsearch/json?query=coffee&location=22.303940,114.170372&radius=1000&maxprice=3&key=myAPIKey

URL-адрес, который я получаю с помощью urlencode: https://maps.googleapis.com/maps/api/place/textsearch/json?query=coffee&location=22.303940%2C114.170372&radius=1000&maxprice=3&key=myAPIKEY

Как удалить «%2C» в URL-адресе? (Я показал свой код ниже)

serviceurl_placesearch = 'https://maps.googleapis.com/maps/api/place/textsearch/json?'
    parameters = dict()
    query = input('What are you searching for?')     
    parameters['query'] = query

parameters['location'] = "22.303940,114.170372"

while True:
    radius = input('Enter radius of search in meters: ')
    try:
        radius = int(radius)
        parameters['radius'] = radius
        break
    except:
        print('Please enter number for radius')

while True:
    maxprice = input('Enter the maximum price level you are looking for(0 to 4): ')
    try:
        maxprice = int(maxprice)
        parameters['maxprice'] = maxprice
        break
    except:
        print('Valid inputs are 0,1,2,3,4')
parameters['key'] = API_key

url = serviceurl_placesearch + urllib.parse.urlencode(parameters)

Я добавил этот фрагмент кода, чтобы URL-адрес работал, однако я не думаю, что это долгосрочное решение. Я ищу более долгосрочное решение.

urlparts = url.split('%2C')
url = ','.join(urlparts)

person Pasindu Samaranayake    schedule 10.02.2020    source источник
comment
%2C – это кодировка запятой в процентном кодировании. Требует ли API, который вы нажимаете, буквальную запятую, а не версию с процентным кодированием?   -  person Don Rowe    schedule 11.02.2020
comment
@DonRowe, если у меня нет буквальной запятой, вывод json не может быть обработан моим json.loads (), поэтому API требует буквальной запятой, по крайней мере, для получения данных json.   -  person Pasindu Samaranayake    schedule 12.02.2020


Ответы (1)


Вы можете добавить safe=","

import urllib.parse

parameters = {'location': "22.303940,114.170372"}

urllib.parse.urlencode(parameters, safe=',')

Результат

location=22.303940,114.170372
person furas    schedule 11.02.2020