Python-从URL参数读取特殊字符

时间:2019-01-28 16:58:04

标签: python django url

我正在从下面的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 :(得分:1)

您可能需要使用%2B

例如:

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

Reference

答案 1 :(得分:0)

您可以自行拆分查询字符串以保留加号:

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]'}

答案 2 :(得分:0)

使用%xx转义符替换字符串中的特殊字符。字母,数字和字符“ _.-”都不会被引用。默认情况下,此函数用于引用URL的路径部分。可选的safe参数指定不应引用的其他字符-其默认值为'/'