如何以元组列表的形式处理查询参数?

时间:2012-05-29 11:59:51

标签: python string list tuples query-parameters

给出参数名称和值的元组列表,例如:

[("foo", 10), ("bar", None), ("baz", "some_string")]

和一些网址字符串,例如:

"/some/url/string"

我的函数应该能够创建以下输出字符串(注意查询字符串中不包含无值元组):

"/some/url/string?foo=10&baz=some_string"

我尝试使用连接,但由于值不是所有字符串,我必须先转换它们。也许有人可以通过简短而干净的方式帮助我。

2 个答案:

答案 0 :(得分:4)

>>> from urllib import urlencode
>>> data = [("foo", 10), ("bar", None), ("baz", "some_string")]
>>> urlencode(data)
'foo=10&bar=None&baz=some_string'
>>> urlencode([x for x in data if x[1] is not None]) # no None's
'foo=10&baz=some_string'

答案 1 :(得分:2)

只需使用内置的urllib为您编码参数。

>>> import urllib
>>> parameters = [("foo", 10), ("bar", None), ("baz", "some_string")]
>>> clean_parameters = [parameter for parameter in parameters if parameter[1] is not None]
>>> urllib.urlencode(clean_parameters)
'foo=10&baz=some_string'