[Python-es] Cadena "a=1 b = 2" a diccionario
Ricardo Cárdenes Medina
ricardo.cardenes en gmail.com
Vie Mar 12 12:14:23 CET 2010
2010/3/12 Arnau Sanchez <pyarnau en gmail.com>:
> On 12/03/10 11:54, Oswaldo Hernández wrote:
>
>> "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, ...
>
> A falta de ver el código, yo diría que es lo suficientemente pythonica.
Ídem. A menos que alguno de los valores contenga espacios en sí mismo,
me parece suficiente. Otra cosa es la manera exacta en que lo haga.
Por ejemplo:
s = "dbname=bd user = usuario host= 192.168.22.5"
partes = []
for x in s.split('='):
partes.extend(x.split())
d = dict(zip(partes[0::2], partes[1::2]))
hace el trabajo correctamente y sin la complicación de las expresiones
regulares..
Más información sobre la lista de distribución Python-es