我想獲取對應於任意URL的字段值。 也就是說給出「http://example.com/hello?q=1&b=1」 我想要一本字典{'q':1,'b':1}。我如何使用cgi.FieldStorage?調用任意url的cgi.FieldStorage
謝謝!
我想獲取對應於任意URL的字段值。 也就是說給出「http://example.com/hello?q=1&b=1」 我想要一本字典{'q':1,'b':1}。我如何使用cgi.FieldStorage?調用任意url的cgi.FieldStorage
謝謝!
可以使用向裏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})
您不 - 您在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
到被解析?!) - 如果你「知道」每個參數只有一個實例,並且這些實例的值總是數字串,那麼很容易將解析返回到你想要的形式(當然更好,這個「已知」屬性可以是,檢查,如果它實際上沒有保留,則引發異常;-)。
我可能會用的FieldStorage堅持,如果我改變了主意,並切換到後處理。但是瞭解另一種方法是很好的。謝謝! – Evgeny 2010-08-05 02:48:04
謝謝!這*完全是我需要的。 :-) – Evgeny 2010-08-05 02:47:03