[Python] (senza oggetto)

Marco Beri marcoberi a gmail.com
Gio 30 Apr 2020 14:11:41 CEST


On Thu, Apr 30, 2020 at 2:07 PM Paolo Miniussi <miniussipaolo a 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.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20200430/4d14e3c2/attachment.html>


Maggiori informazioni sulla lista Python