2012-05-29 29 views
2

由於元組參數名稱的列表和值,例如:如何以元組列表的形式處理查詢參數?

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

和一些URL字符串如:

"/some/url/string" 

我的功能應該能夠創建下列輸出字符串(請注意,無值元不包括在查詢字符串中):

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

我試過使用連接,但由於值不是所有的字符串,我必須轉換他們第一。也許有人可以用簡短而乾淨的方式幫助我做到這一點。

回答

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' 
+2

+1哇......確實包含電池! – Levon

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' 
+5

'如果參數[1]'阻塞了'0'的值。使用'if參數[1]不是無' – eumiro

+0

確實,當我輸入比我想象的快時,確實會咬我。 :) –

+0

@ChristianWitts這將是一個好主意,更新/更正你的答案,不是每個人都會閱讀所有的評論。 – Levon