<div dir="ltr"><div dir="ltr">On Thu, Apr 30, 2020 at 2:07 PM Paolo Miniussi <<a href="mailto:miniussipaolo@gmail.com">miniussipaolo@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Buongiorno<div>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.</div><div>Ho un problema specifico relativo all'estrazione di alcune stringhe che seguono altre stringhe.</div><div>In pratica ho un testo tipo questo:</div><div>lunghezza legno: 1000 cm</div><div>peso del tronco: 34 kg</div><div>tempo di lavorazione: 11 ore 57 minuti</div><div><br></div><div>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).</div><div>Ho approcciato il problema usando lo slice e quindi tagliando le porzioni di stringa desiderate per poi successivamente trasformarle in variabili. </div><div>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.</div><div>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.</div><div>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.</div><div>Avete qualche suggerimento?</div></div></blockquote><div><br></div><div>La soluzione per te sono le regular expression:</div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_quote"><div><font face="monospace"><br></font></div></div><div class="gmail_quote"><div><font face="monospace">>>> testo = """lunghezza legno: 1000 cm</font></div></div><div class="gmail_quote"><div><font face="monospace">... peso del tronco: 34 kg</font></div></div><div class="gmail_quote"><div><font face="monospace">... tempo di lavorazione: 11 ore 57 minuti"""</font></div></div><div class="gmail_quote"><div><font face="monospace">>>> testo</font></div></div><div class="gmail_quote"><div><font face="monospace">'lunghezza legno: 1000 cm\npeso del tronco: 34 kg\ntempo di lavorazione: 11 ore 57 minuti'</font></div></div><div class="gmail_quote"><div><font face="monospace">>>> import re</font></div></div><div class="gmail_quote"><div><font face="monospace">>>> re.findall(r"\s(\d+)\b\s*(\w+)", testo)</font></div></div><div class="gmail_quote"><div><font face="monospace">[('1000', 'cm'), ('34', 'kg'), ('11', 'ore'), ('57', 'minuti')]</font></div></div></blockquote><div class="gmail_quote"><div><br></div><div><br></div><div>Potrei consigliarti un buon testo sulle regex ma sarei in conflitto di interessi (e poi trovi comunque una marea di tutorial su web) :-D</div><div><br></div><div>Ciao.<br>Marco.</div></div></div>