【问题标题】:How to process query parameters in form of a list of tuples?如何以元组列表的形式处理查询参数?
【发布时间】:2012-05-29 11:59:51
【问题描述】:

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

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

还有一些 url 字符串,例如:

"/some/url/string"

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

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

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

【问题讨论】:

    标签: python string list tuples query-parameters


    【解决方案1】:
    >>> 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'
    

    【讨论】:

      【解决方案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'
      

      【讨论】:

      • if parameter[1] 阻止 0 的值。使用if parameter[1] is not None
      • 没错,当我打字的速度比我想象的要快时,这确实会咬我。 :)
      • @ChristianWitts 更新/更正你的答案是个好主意,不是每个人都会阅读所有的 cmets。
      猜你喜欢
      • 2021-04-02
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2021-01-21
      • 2018-10-22
      • 2010-10-13
      相关资源
      最近更新 更多