14

我在 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。

谢谢-帕特

4

2 回答 2

22

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

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

>>> u = urlencode(params)
>>> u.replace('%7C', '|')
'p=1+2+3+4+5%266&l=ab|cd|ef'  
于 2012-07-03T19:17:51.667 回答
2

在 Python 3 中更简单:

urllib.parse.urlencode(params, safe='|')
于 2012-07-04T02:15:18.343 回答