On Thu, Apr 30, 2020 at 2:07 PM Paolo Miniussi <miniussipa...@gmail.com>
wrote:

> Buongiorno
> molto piacere Paolo. Sono iscritto alla list di Python e ho visto che in
> questi giorni state trattando l'argomento relativo al conteggio delle
> parole.
> Ho un problema specifico relativo all'estrazione di alcune stringhe che
> seguono altre stringhe.
> In pratica ho un testo tipo questo:
> lunghezza legno: 1000 cm
> peso del tronco: 34 kg
> tempo di lavorazione: 11 ore 57 minuti
>
> Praticamente devo estrarre ciò che viene dopo le singole definizioni.
> Quindi per la prima riga devo prelevare la stringa "1000 cm" , per la
> seconda "34 kg" e via così (poi dovrò eventualmente capire se prendere solo
> il valore numero oppure tutta la stringa).
> Ho approcciato il problema usando lo slice e quindi tagliando le porzioni
> di stringa desiderate per poi successivamente trasformarle in variabili.
> Il problema è che il mio file di log che contiene queste informazioni da
> estrarre può ovviamente variare di lunghezza e quindi lo slice va a farsi
> benedire.
> Per spiegarmi, il valore della "lunghezza legno:" invece di essere 1000 cm
> può diventare 123000 cm quindi il taglio in slice mi troncherebbe il dato.
> Stavo cercando di cambiare approccio e quindi di prelevare i dati
> prendendo tutto quello che viene dopo una data stringa e prima di quella
> successiva.
> Avete qualche suggerimento?
>

La soluzione per te sono le regular expression:


>>> testo = """lunghezza legno: 1000 cm
... peso del tronco: 34 kg
... tempo di lavorazione: 11 ore 57 minuti"""
>>> testo
'lunghezza legno: 1000 cm\npeso del tronco: 34 kg\ntempo di lavorazione: 11
ore 57 minuti'
>>> import re
>>> re.findall(r"\s(\d+)\b\s*(\w+)", testo)
[('1000', 'cm'), ('34', 'kg'), ('11', 'ore'), ('57', 'minuti')]



Potrei consigliarti un buon testo sulle regex ma sarei in conflitto di
interessi (e poi trovi comunque una marea di tutorial su web) :-D

Ciao.
Marco.
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a