Подтвердить что ты не робот

Как разобрать BaseHTTPRequestHandler.path

Я использую Python BaseHTTPRequestHandler. Когда я реализую метод do_GET, я нахожусь синтаксический анализ вручную self.path

self.path выглядит примерно так:

/?parameter=value&other=some

Как я должен разбирать его, чтобы получить dict, например

{'parameter': 'value', 'other':'some'}

Спасибо,

4b9b3361

Ответ 1

Используйте parse_qs из модуля urlparse, но обязательно удалите "/?":

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

Обратите внимание, что каждый параметр может иметь несколько значений, поэтому возвращаемый dict отображает каждое имя параметра в список значений.

Ответ 2

Учитывая, что self.path потенциально может быть иерархическим, вы должны, вероятно, сделать что-то вроде следующего:

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

Ответ 3

Если кому-то это нужно для Python3:

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

urlparse был переименован в urllib.parse в Python3.