Mis 2 lochas

2010/3/12 Oswaldo Hernández <lis...@soft-com.es>:
> Hola,
>
> Tengo una cadena compuesta por pares de valores relacionados con el signo
> '=' y separados por espacios, ademas, los valores de cada par pueden ir
> pegados al signo igual o separados por espacios:
>
>    "dbname=bd user = usuario host= 192.168.22.5"
>
> Quiero convertirla a diccionario de forma que quede:
>    {"dbname":"bd", "user":"usuario", "host":"192.168.22.5"}
>
> Lo estoy haciendo de una forma bastante burda: elimino espacios a los lados
> del signo '=', luego separo los pares con split, ...
>
> Me gustaría hacerlo de una forma mas pythonica. Estoy intentando hacerlo con
> expresiones regulares pero me temo que regex no es mi fuerte :(
>
> ¿Sabeis alguna forma pythonica de hacerlo?

flat = sum([ x.strip().split() for x in "dbname=bd user = usuario
host= 192.168.22.5".split("=")], [])

# forma alternativa flat = [y for sub in [ x.strip().split() for x in
"dbname=bd user = usuario host= 192.168.22.5".split("=")] for y in
sub]

dict([ (flat[i],flat[j]) for (i,j) in
zip(range(0,len(flat),2),range(1,len(flat),2)) ])

En Python 3 con comprensiones de diccionario sería

{ flat[i] : flat[j] for (i,j) in
zip(range(0,len(flat),2),range(1,len(flat),2)) }

Saludos

F. Palm

-- 
--------------------------------------
fp...@ula.ve
francisco.p...@gmail.com

cel: 0414 5109177, 0426 5721730
tel: 0274 6352001

----
Yo creo que todavía no es demasiado tarde para construir una utopía
que nos permita compartir la tierra. Gabriel García Márquez.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a