如何解析BaseHTTPRequestHandler.path

Jua*_*nti 29 python

我正在使用Python BaseHTTPRequestHandler.当我实现do_GET方法时,我发现自己手工解析self.path

self.path 看起来像:

/?parameter=value&other=some
Run Code Online (Sandbox Code Playgroud)

我应该如何解析它以获得类似的词典

{'parameter': 'value', 'other':'some'}
Run Code Online (Sandbox Code Playgroud)

谢谢,

Dec*_*der 30

考虑到self.path可能是分层的,你应该做如下的事情:

import urlparse
o = urlparse.urlparse(self.path)
urlparse.parse_qs(o.query)
Run Code Online (Sandbox Code Playgroud)


And*_*Dog 22

使用parse_qsurlparse模块,但一定要去掉"/?":

from urlparse import parse_qs
s = "/?parameter=value&other=some"
print parse_qs(s[2:]) # prints {'other': ['some'], 'parameter': ['value']}
Run Code Online (Sandbox Code Playgroud)

请注意,每个参数可以有多个值,因此返回的dict将每个参数名称映射到值列表.

  • 在 python3 中:`from urllib.parse import parse_qs` (3认同)

Max*_*ers 12

如果有人需要它为Python3:

import urllib.parse
s = "/?parameter=value&other=some"
print(urllib.parse.parse_qs(s[2:]))
>>> {'other': ['some'], 'parameter': ['value']}
Run Code Online (Sandbox Code Playgroud)

urlparseurllib.parse在Python3 中重命名为.