[PIPython] ancora colonne!

Nicola Paolucci nick
Ven 19 Nov 2004 15:16:43 CET


ciao,
Per leggibilita' ti consiglio di inserire la tua risposta sempre al fondo
dei messaggi. La pratica del top-post e' generalmente contro la netiquette
su newsgroups e mailing lists. Rende difficile seguire il filo di
discussioni complesse.

>> Ok,
>> ho trovato una soluzione passabile al problema delle righe di lunghezza
>> variabile:
>>
>> f = StringIO.StringIO()
>> l = [['1','2','3','aa'],['4','5','6'],['7','8','9']]
>> #lunghezza massima di una riga
>> m = max([len(a) for a in l])
>> #trasforma la matrice in simmetrica
>> simmetrizzata = [a+['']*(m -len(a)) for a in l]
>>
>> #presenta la matrice trasposta riga per riga
>> for line in apply(zip,simmetrizzata):
>>     f.write('\t'.join(line) + '\n')
>>
>> Fammi sapere se funziona come ti serve.

> Anche questa soluzione va bene. Il mio quesito e' sorto perche' ho un
> centinaio di file ciascuno con tre colonne di dati (di lunghezza
> variabile) e
> voglio prendere solo la terza colonna di ciascun file e spedirla ad un
> output,
> in altre parole un file che riassuma il tutto, in modo tale che possa
> importare tale file riassuntivo su exel per analizzarlo.
> Non conoscendo bene python ho provato ad inserire ciascuna colonna in una
> lista ed a creare una lista nidificata di colonne! Qui pero' non sapevo
> come
> stampare ciascun valore sull'output. Non so se ci sono dei metodi
> alternativi
> piu' rapidi, ma non essendo programmatore ho cercato di far fare al
> programma
> cio' che mi sembrava logico per il mio scopo.

Mi devi scusare ma non ho capito bene la tua spiegazione. Se mi fai un
esempio pratico con qualche file, il suo contenuto e cosa vuoi come
risultato capisco meglio.

> grazie mille per il tuo aiuto.

Figurati.

> Un'ultima cosa. Dato che i miei file sono nominati in sequenza, del tipo
> file0.txt, file1.txt ... filen.txt, quando vado ad aggiungere le colonne
> queste sono nell'ordine colonna n...colonna 1, colonna 0. E' possibile
> risolvere questo inconveniente?

Anche questo pezzo non mi e' molto chiaro.
Comunque ogni volta che hai una lista, ordinarla dall'inizio alla fine o
dalla fine all'inizio in Python e' banale. In generale, si prepara la
lista da ordinare (la si decora), si chiama la funzione .sort(), e si
de-decora la lista. Se vuoi l'inverso puoi chiamare .reverse() subito dopo
la chiamata a .sort().

ciao,
    Nick





More information about the Python mailing list