2009/5/28 <a href="mailto:angelseth@libero.it">angelseth@libero.it</a> <span dir="ltr">&lt;<a href="mailto:angelseth@libero.it">angelseth@libero.it</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ciao a tutti.<br>
Sono un biologo marino (quindi il mio approccio alla<br>
programmazione è completamente da autodidatta) e  mi sono appena scritto alla<br>
ML. Ho iniziato a usare Python da qualche mese sia per diletto che per lavoro.<br>
Spesso infatti ho bisogno di rendere automatici, precisi e veloci alcuni<br>
processi di analisi di dati biologici.</blockquote><div><br>Questo programmillo:<br>#==============================<br>
<br>raw = &quot;&quot;&quot;ID Date Time Val1 Val2<br>3522 28/04/2009 07:12:55 0,73 16,58<br>3664 28/04/2009 07:17:39 1,05 16,48<br>3665 28/04/2009 07:17:41 1,83 16,50<br>3666 28/04/2009 07:17:43 3,6 16,50<br>3667 28/04/2009 07:17:45 4,58 16,56<br>
3668 28/04/2009 07:17:47 4,37 16,58<br>3669 28/04/2009 07:17:49 2,43 16,60<br>3690 28/04/2009 07:18:31 1,65 16,58<br>3691 28/04/2009 07:18:33 1,5 16,58<br>3712 28/04/2009 07:19:15 1,27 16,56<br>3713 28/04/2009 07:19:17 1,0 16,58<br>
3714 28/04/2009 07:19:19 0,6 16,58<br>3772 28/04/2009 07:21:15 1,85 16,48&quot;&quot;&quot;<br><br>dati = sorted([line.split(&quot; &quot;) for line in raw.split(&quot;\n&quot;)[1:]])<br><br>liste = []<br>for riga in dati:<br>
    if not liste or int(riga[0]) != int(liste[-1][-1][0]) + 1:<br>        liste.append([])<br>    liste[-1].append(riga)<br><br>for n, lista in enumerate(liste):<br>    print &quot;Sequenza %d lunghezza %d&quot; % (n, len(lista))<br>
    for riga in lista:<br>        print riga[0],<br>    print &quot;\n&quot;, &quot;=&quot;*10<br><br>#==============================<br>
<br>Stampa questo:<br><br>Sequenza 0 lunghezza 1<br>3522<br>==========<br>Sequenza 1 lunghezza 6<br>3664 3665 3666 3667 3668 3669<br>==========<br>Sequenza 2 lunghezza 2<br>3690 3691<br>==========<br>Sequenza 3 lunghezza 3<br>
3712 3713 3714<br>==========<br>Sequenza 4 lunghezza 1<br>3772<br>==========<br><br><br>Il lavoro &quot;sporco&quot; lo fanno tutto queste righe:<br><br>liste = []<br>
for riga in dati:<br>
    if not liste or int(riga[0]) != int(liste[-1][-1][0]) + 1:<br>
        liste.append([])<br>
    liste[-1].append(riga)<br>
<br><br>Ovviamente do per scontato un po&#39; di cose:<br>- che la prima riga contenga gli header<br>- che ogni riga abbia un valore intero come primo campo<br>- che i campi siano separati da un solo spazio <br><br>Se non e` cosi` devi cambiare il primo split di questa riga: <br>
    dati = sorted([line.split(&quot; &quot;) for line in raw.split(&quot;\n&quot;)[1:]])<br><br></div></div>Ciao.<br>Marco.<br><br>-- <br><a href="http://thinkcode.tv">http://thinkcode.tv</a> - Prossimamente su questi schermi<br>
<a href="http://beri.it">http://beri.it</a> - Blog di una testina di vitello<br><a href="http://stacktrace.it">http://stacktrace.it</a> - Aperiodico di resistenza informatica<br><br>