我在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
答案 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='|')