Python - чтение специальных символов из параметра URL - PullRequest
0 голосов
/ 28 января 2019

Я читаю параметр URL из приведенного ниже URL

http://exaple.com/api/v1/get_example/?fruits_name=[apple%20+%20banana]

fruits = urllib.unquote(request.GET.get('fruits_name', None)).decode('utf8')
    print fruits

мой вывод: [apple banana] между яблоком и бананом Я получаю три пробела, но не символ + в моем выводе.исходная строка [apple + banana].Мне нужен вывод как [apple + banana].

Может кто-нибудь подсказать, где я делаю не так ??

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Вы можете разделить строку запроса самостоятельно, чтобы сохранить знак плюс:

from urllib.parse import urlparse, unquote

u = 'http://exaple.com/api/v1/get_example/?fruits_name=[apple%20+%20banana]'

o = urlparse(u)
qs = unquote(o.query)

queryDict = {k: v for (k, v) in [x.split("=", 1) for x in qs.split("&")]}
print(queryDict)

Отпечатки:

{'fruits_name': '[apple + banana]'}
0 голосов
/ 28 января 2019

Заменить специальные символы в строке, используя escape-символ% xx.Буквы, цифры и символы «_.-» никогда не заключаются в кавычки.По умолчанию эта функция предназначена для цитирования раздела пути URL-адреса. Необязательный параметр safe указывает дополнительные символы, которые не следует заключать в кавычки - его значение по умолчанию равно '/'

0 голосов
/ 28 января 2019

Вам, вероятно, нужно использовать %2B

Пример:

http://exaple.com/api/v1/get_example/?fruits_name=[apple%20%2B%20banana]

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...