Py学习  »  Python

python-从url参数读取特殊字符

user3202086 • 4 年前 • 1194 次点击  

我正在从下面的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] . 我需要输出为 [苹果+香蕉] .

有人能告诉我哪里做错了吗??

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40873
 
1194 次点击  
文章 [ 3 ]  |  最新文章 4 年前
sampath kumara
Reply   •   1 楼
sampath kumara    5 年前

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

Maurice Meyer
Reply   •   2 楼
Maurice Meyer    5 年前

可以单独拆分查询字符串以保留加号:

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]'}
Rakesh
Reply   •   3 楼
Rakesh    5 年前

你可能需要使用 %2B

前任:

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

Reference