我想获得与任意网址相对应的字段值。 即给出“http://example.com/hello?q=1&b=1” 我想要一本字典{'q':1,'b':1}。我如何使用cgi.FieldStorage?
谢谢!
答案 0 :(得分: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})
答案 1 :(得分:2)
您没有 - 您在2.5或更早版本中使用cgi.parse_qs,在2.6或更高版本中使用urlparse.parse_qs。 E.g:
>>> import urlparse
>>> pr = urlparse.urlparse("http://example.com/hello?q=1&b=1")
>>> urlparse.parse_qs(pr.query)
{'q': ['1'], 'b': ['1']}
请注意,值始终是字符串列表 - 您似乎希望它们是(“标量”)整数,但这实际上没有意义(您希望如何解析?q=bah
?!) - 如果你“知道”每个参数只有一个实例,那些实例的值总是数字字符串,那么很容易将解析返回的内容转换成你想要的形式,当然(更好的是,这个“已知”属性可以检查,如果实际上没有,则引发异常; - )。