python urlencode多个相同的变量

时间:2015-02-13 04:33:27

标签: python urlencode

我已经阅读了有关python(v2)urlencode的其他帖子,但没有找到这个问题。

如果我有多个变量但是所有变量都具有相同名称,我如何利用urlencode(如果这是正确的工具)?所以说URL是:

http://path.com/a?var=earth&var=wind&var=fire

如果我定义这个:

url = 'http://path.com/a?'
query_args = {'var': 'earth',
              'var': 'wind',
              'var': 'fire'}
encoded_args = urllib.urlencode(query_args, doseq=True)
print url + encoded_args

似乎urlencode只返回最后定义的'var':

http://path.com/a?var=fire

如何获得所有var的编码?

1 个答案:

答案 0 :(得分:1)

来自docs

  

将映射对象或 一系列双元素元组 转换为“百分比编码”字符串......

所以......就像这样:

>>> import urllib
>>> urllib.urlencode([('var', 'earth'), ('var', 'wind')])
'var=earth&var=wind'

“问题”是您传递给urlencode的字典只有一个键/值对:

>>> {'var': 'earth',
...  'var': 'wind',
...  'var': 'fire'}
{'var': 'fire'}

因为字典只能在其中包含一个特定的键。允许urlencode接受一系列2元素元组正是出于这个原因(对于查询参数的 order 重要的场外网址)