2010-09-24 4 views
19

Estoy usando Python's BaseHTTPRequestHandler. Cuando implemente el método do_GET me encuentro de análisis por parte self.pathCómo analizar BaseHTTPRequestHandler.path

self.path se ve algo como:

/?parameter=value&other=some 

¿Cómo debería analizarlo con el fin de conseguir un diccionario como

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

Gracias,

+0

posible duplicado de [cadena de consulta de análisis con urllib en Python 2.4] (http://stackoverflow.com/questions/1769625/parse-query-string-with-urllib-in-python-2-4) – katrielalex

Respuesta

17

Uso parse_qs del módulo urlparse, pero asegúrese de eliminar el "/?":

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

Tenga en cuenta que cada parámetro puede tener varios valores, por lo que el dict regresado mapea cada nombre de parámetro a una lista de valores .

23

Considerando self.path podría potencialmente ser jerárquica, probablemente debería hacer algo como lo siguiente:

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

En caso de que alguien lo necesita para python3:

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

urlparse se renombró a urllib.parse en Python3.