How to parse BaseHTTPRequestHandler.path

In case somebody needs it for Python3:

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

urlparse was renamed to urllib.parse in Python3.


Use parse_qs from the urlparse module, but make sure you remove the "/?":

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

Note that each parameter can have multiple values, so the returned dict maps each parameter name to a list of values.


The cgi and urlparse modules have that: https://docs.python.org/2/library/urlparse.html#urlparse.parse_qs


Considering self.path could potentially be hierarchical, you should probably do something like the following :

import urlparse
o = urlparse.urlparse(self.path)
urlparse.parse_qs(o.query)

Tags:

Python