如何在python中转义url_encode的管道(|)符号

wzr*_*337 12 python

我在python中遇到了urllib.url_encode的问题.投注用一些代码解释:

>>> from urllib import urlencode
>>> params = {'p' : '1 2 3 4 5&6', 'l' : 'ab|cd|ef'}
>>> urlencode(params)
'p=1+2+3+4+5%266&l=ab%7Ccd%7Cef'
Run Code Online (Sandbox Code Playgroud)

我想将管道('|')保留在l参数中.你能告诉我怎么样吗?

结果应该是

'p=1+2+3+4+5%266&l=ab|cd|ef'
Run Code Online (Sandbox Code Playgroud)

PS:我不想手动汇总URL,但是使用urlencode.

谢谢--Pat

Rob*_*obB 18

将映射对象或两元素元组序列转换为"百分比编码"字符串[...]

urlencode()来按预期方法起作用.如果要阻止编码,则可以先对整个对象进行编码,然后用管道替换编码后的字符.

>>> u = urlencode(params)
>>> u.replace('%7C', '|')
'p=1+2+3+4+5%266&l=ab|cd|ef'  
Run Code Online (Sandbox Code Playgroud)