使用带斜线的 python quote_plus
using python quote_plus with slashes
我正在使用 urllib
中的 quote_plus
,它与它的堂兄 unquote_plus
一起工作得很好,用于在空格之间创建加号,使得:The Cat Sat
变为 The+Cat+Sat
这太棒了。但是现在的问题是,当我有 /description/id/34/the cat sat on
时,使用这个会影响路径变成这样
%2Fdescription%2F274%2Fthe+cat+sat+on
我该怎么办。我真的想要空间的加号,但我在为加号的空间做替换之间左右为难。是否有适当的治疗方法来建立开始的路径。我真的很想保留斜杠和加号。
Flask 模板视图:
<a href="{{animal.url|quote_plus}}">{{animal.title}}</a>
在code.py中:
animal["url"] = "/description/"+str(animal["id"]) + "/" + animal["title"]
还有:
app.jinja_env.filters['quote_plus'] = lambda u: quote_plus(u)
用 urllib.quote
代替 urllib.quote_plus
怎么样?它将用 '%20' 引用 '+' 并保持斜线不变。我认为它是不可定制的,因为它应该符合某些 url 标准。
当您调用 quote_plus 时,设置 safe='/',这就是您所要求的。
查看 https://docs.python.org/3/library/urllib.parse.html 上的文档
请注意,quote 有一个默认参数 safe='/'
其中 quote_plus 有一个默认的 safe=''
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
urllib.parse.quote_plus(string, safe='', encoding=None, errors=None)
区别如下:
url = '/description/id/34/the cat sat on'
print 'quote: ', urllib.quote(url)
print 'quote_plus: ', urllib.quote_plus(url)
print 'quote_plus with safe set: ', urllib.quote_plus(url, safe='/')
输出
quote: /description/id/34/the%20cat%20sat%20on
quote_plus: %2Fdescription%2Fid%2F34%2Fthe+cat+sat+on
quote_plus with safe set: /description/id/34/the+cat+sat+on
我正在使用 urllib
中的 quote_plus
,它与它的堂兄 unquote_plus
一起工作得很好,用于在空格之间创建加号,使得:The Cat Sat
变为 The+Cat+Sat
这太棒了。但是现在的问题是,当我有 /description/id/34/the cat sat on
时,使用这个会影响路径变成这样
%2Fdescription%2F274%2Fthe+cat+sat+on
我该怎么办。我真的想要空间的加号,但我在为加号的空间做替换之间左右为难。是否有适当的治疗方法来建立开始的路径。我真的很想保留斜杠和加号。
Flask 模板视图:
<a href="{{animal.url|quote_plus}}">{{animal.title}}</a>
在code.py中:
animal["url"] = "/description/"+str(animal["id"]) + "/" + animal["title"]
还有:
app.jinja_env.filters['quote_plus'] = lambda u: quote_plus(u)
用 urllib.quote
代替 urllib.quote_plus
怎么样?它将用 '%20' 引用 '+' 并保持斜线不变。我认为它是不可定制的,因为它应该符合某些 url 标准。
当您调用 quote_plus 时,设置 safe='/',这就是您所要求的。
查看 https://docs.python.org/3/library/urllib.parse.html 上的文档 请注意,quote 有一个默认参数 safe='/' 其中 quote_plus 有一个默认的 safe=''
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
urllib.parse.quote_plus(string, safe='', encoding=None, errors=None)
区别如下:
url = '/description/id/34/the cat sat on'
print 'quote: ', urllib.quote(url)
print 'quote_plus: ', urllib.quote_plus(url)
print 'quote_plus with safe set: ', urllib.quote_plus(url, safe='/')
输出
quote: /description/id/34/the%20cat%20sat%20on
quote_plus: %2Fdescription%2Fid%2F34%2Fthe+cat+sat+on
quote_plus with safe set: /description/id/34/the+cat+sat+on