[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