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/