2010-08-04 16 views

回答

3

可以使用向裏urlparse做

from urlparse import urlparse, parse_qs 
qs = urlparse("http://example.com/hello?q=1&b=1").query 
parse_qs(qs) 

如果必須使用FieldStorage

cgi.FieldStorage(environ={'REQUEST_METHOD':'GET', 'QUERY_STRING':qs}) 
+0

謝謝!這*完全是我需要的。 :-) – Evgeny 2010-08-05 02:47:03

2

您不 - 您在2.5或更早版本中使用cgi.parse_qs,2.6或更高版本中使用urlparse.parse_qs。例如:

>>> import urlparse 
>>> pr = urlparse.urlparse("http://example.com/hello?q=1&b=1") 
>>> urlparse.parse_qs(pr.query) 
{'q': ['1'], 'b': ['1']} 

注意,值總是要串的名單 - 你似乎希望他們(「標」)的整數,但真的是沒有意義的(你會怎麼指望?q=bah到被解析?!) - 如果你「知道」每個參數只有一個實例,並且這些實例的值總是數字串,那麼很容易將解析返回到你想要的形式(當然更好,這個「已知」屬性可以是,檢查,如果它實際上沒有保留,則引發異常;-)。

+0

我可能會用的FieldStorage堅持,如果我改變了主意,並切換到後處理。但是瞭解另一種方法是很好的。謝謝! – Evgeny 2010-08-05 02:48:04