如何解析BaseHTTPRequestHandler.path
我正在使用Python的BaseHTTPRequestHandler
。当我实现do_GET方法时,我发现自己需要手动解析self.path
。
self.path
的内容大概是这样的:
/?parameter=value&other=some
我应该怎么解析它,才能得到一个像这样的字典:
{'parameter': 'value', 'other':'some'}
谢谢,
5 个回答
30
如果有人需要在Python3中使用这个:
import urllib.parse
s = "/?parameter=value&other=some"
query = urllib.parse.urlparse(s).query
>>> 'parameter=value&other=some'
urllib.parse.parse_qs(query)
>>> {'other': ['some'], 'parameter': ['value']}
urlparse
在Python3中被改名为 urllib.parse
。
38
在Python 2中,考虑到self.path
可能是分层的,你可能应该做类似下面的事情:
import urlparse
o = urlparse.urlparse(self.path)
urlparse.parse_qs(o.query)
27
使用 parse_qs
这个函数,它在 urlparse
模块里。不过要记得先把 "/?" 去掉:
from urlparse import parse_qs
s = "/?parameter=value&other=some"
print parse_qs(s[2:]) # prints {'other': ['some'], 'parameter': ['value']}
要注意的是,每个参数可以有多个值,所以返回的字典会把每个参数名对应到一个值的列表。