[Python] RE e dizionario

Giovanni Porcari giovanni.porcari a softwell.it
Mer 21 Dic 2016 13:46:10 CET


> Il giorno 21 dic 2016, alle ore 13:02, Marco Beri <marcoberi a gmail.com> ha scritto:
> 
> 2016-12-21 13:00 GMT+01:00 Marcello <marcello a linuxvil.it>:
> La stringa che gli do in pasto contiene varie configurazioni suddivise in 2 o 3 righe e a volte mi mette dopo un '=' una '\'  esempio 'password=\' e va a capo con la password_letta.
> Quando il codice incontra questo  problema il valore assegnato al dizionario risulta errato 'password': '\\\r\n'.
> Si può risolvere.
> 
> Marcello,
> se l'ultima frase qui sopra è una affermazione, bravo, buon lavoro.
> 
> Se invece è una domanda, io sostituirei tutti gli "=\n" con "=" nella variabile.



Che belli gli oneliner :)

>>> [dict( [(k,v) for k,v in [hostline.split('=') for hostline in host.split(' ') if '=' in hostline] if k in ('name', 'remote-address', 'password')]) for host in hosts.replace('=\n','=').split('\n')]

 
[{'name': 'nome1', 'password': 'passwd1', 'remote-address': '10.172.33.2'},
 {'name': 'nome2', 'password': 'passwd2', 'remote-address': '10.172.33.2'},
 {'name': 'nome3', 'password': 'passwd3', 'remote-address': '10.172.34.38'},
 {'name': 'nome4', 'password': 'passwd4', 'remote-address': '10.172.34.46'},
 {'name': 'nome5', 'password': 'passwd5', 'remote-address': '10.172.34.50'},
 {'name': 'nome6', 'password': 'passwd6', 'remote-address': '10.172.34.54'}]


:D


G


Maggiori informazioni sulla lista Python