[Python] Parsing output dei comandi
Daniele Varrazzo
piro a develer.com
Gio 1 Maggio 2008 16:32:55 CEST
On Thu, 1 May 2008 16:08:18 +0200, Mattia <mattia.list a gmail.com> wrote:
> Ciao a tutti,
>
> vorrei catturare l'output di un comando del tipo:
...
> Sto provando con split ma con risultati scadenti.
> Ci sono degli strumenti adatti allo scopo?
Questo e' un super-hack, ma:
s = """our %lsdvd = ( device => '/dev/dvd', [...] );"""
import re
lsdvd = eval(re.sub(r"(\w+)\s+\=\>", r"'\1':", s)
.split("=", 1)[1]
.replace(";", "").replace("(", "{").replace(")", "}"))
fa esattamente quello che chiedi.
La regexp converte la tua sintassi in quella di un dizionario Python. Lo
split e i replace eliminano la fuffa di contorno.
Per un uilizzo piu' serio (per esempio piu' sicuro, se la fonte dei dati
non fosse fidata) occorre scrivere un parser vero.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python