2009-05-22 17 views
6

Come faccio a seguire quanto segue in Python 2.2 utilizzando solo moduli incorporati?Converti un elenco di elenchi in una stringa delimitata

Ho una lista di liste come questa:
[[ 'cane', 1], [ 'cat', 2, 'a'], [ 'rat', 3, 4], [ 'bat' , 5]]

E da esso mi piacerebbe produrre una rappresentazione in formato stringa di una tabella come questa in cui le colonne sono delimitate da tabulazioni e le righe da linee nuove.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

cioè
'cane \ t1 \ NCAT \ t2 \ ta \ nrat t3 \ t4 \ nbat \ t5 \'

risposta

19

Come questo, forse:

lists = [['dog', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat', 5]] 
result = "\n".join("\t".join(map(str,l)) for l in lists) 

Questo unisce tutti gli elenchi interni utilizzando le schede e concatena l'elenco risultante di stringhe utilizzando le nuove righe.

Utilizza una funzionalità denominata list comprehension per elaborare l'elenco esterno.

+0

È necessario convertire gli interi in stringhe prima di unirle. – Dave

+0

dovrai assicurarti che ogni elemento della variabile 'liste' sia una stringa, ma a parte questo, lo snippet di codice è estremamente conciso ed espressivo. Dovrei davvero passare più tempo con Python .... –

+0

Puoi anche cambiare la seconda riga in: result = '\ n'.join (' \ t'.join (str (el) per el in lista) per la lista in liste) – mipadi

4
# rows contains the list of lists 
lines = [] 
for row in rows: 
    lines.append('\t'.join(map(str, row))) 
result = '\n'.join(lines) 
+0

+1 per mantenerlo semplice e facilmente leggibile – nosklo

Problemi correlati