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

时间:2012-07-03 19:12:18

标签: 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'

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

结果应为

'p=1+2+3+4+5%266&l=ab|cd|ef'

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

由于 -Pat

2 个答案:

答案 0 :(得分:17)

  

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

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

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

答案 1 :(得分:1)

Python 3中更简单:

urllib.parse.urlencode(params, safe='|')