python urlencode 多个相同的变量

python urlencode multiple same variables

我已经阅读了关于 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 returns 只定义了最后一个 'var':

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

如何获得所有 var 的编码?

来自docs

Convert a mapping object or a sequence of two-element tuples to a “percent-encoded” string...

所以...像这样:

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

"problem"是你传给urlencode的字典只有一对key/value:

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

因为字典中只能有一个特定的键一次。允许 urlencode 接受一系列 2 元素元组正是出于这个原因(以及对于查询参数的 order 很重要的偶然 url)