unquote parse python parsing url query-parameters

parse - Parámetros de consulta URL para dict python



url unquote python 3 (4)

Para Python 2.7

In [14]: url = "http://www.example.org/default.html?ct=32&op=92&item=98" In [15]: from urlparse import urlparse, parse_qsl In [16]: parse_url = urlparse(url) In [17]: query_dict = dict(parse_qsl(parse_url.query)) In [18]: query_dict Out[18]: {''ct'': ''32'', ''item'': ''98'', ''op'': ''92''}

¿Hay alguna forma de analizar una URL (con alguna biblioteca de Python) y devolver un diccionario de Python con las claves y los valores de una parte de parámetros de consulta de la URL?

Por ejemplo:

url = "http://www.example.org/default.html?ct=32&op=92&item=98"

rendimiento esperado:

{''ct'':32, ''op'':92, ''item'':98}


Para Python 3, los valores del dict de parse_qs están en una lista, porque puede haber múltiples valores. Si solo quieres el primero:

>>> from urllib.parse import urlsplit, parse_qs >>> >>> url = "http://www.example.org/default.html?ct=32&op=92&item=98" >>> query = urlsplit(url).query >>> params = parse_qs(query) >>> params {''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']} >>> dict(params) {''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']} >>> {k: v[0] for k, v in params.items()} {''item'': ''98'', ''op'': ''92'', ''ct'': ''32''}


Si prefiere no usar un analizador:

url = "http://www.example.org/default.html?ct=32&op=92&item=98" url = url.split("?")[1] dict = {x[0] : x[1] for x in [x.split("=") for x in url[1:].split("&") ]}


Use la biblioteca urllib.parse :

>>> from urllib import parse >>> url = "http://www.example.org/default.html?ct=32&op=92&item=98" >>> parse.urlsplit(url) SplitResult(scheme=''http'', netloc=''www.example.org'', path=''/default.html'', query=''ct=32&op=92&item=98'', fragment='''') >>> parse.parse_qs(parse.urlsplit(url).query) {''item'': [''98''], ''op'': [''92''], ''ct'': [''32'']} >>> dict(parse.parse_qsl(parse.urlsplit(url).query)) {''item'': ''98'', ''op'': ''92'', ''ct'': ''32''}

Los urllib.parse.parse_qs() y urllib.parse.parse_qsl() analizan cadenas de consulta, teniendo en cuenta que las claves pueden aparecer más de una vez y que el orden puede ser importante.

Si todavía está en Python 2, urllib.parse se llamó urlparse .