2009-05-22 20 views
6

¿Cómo hago lo siguiente en Python 2.2 usando solo los módulos incorporados?Convertir la lista de listas en una cadena delimitada

Tengo una lista de listas como esta:
[['dog', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat' , 5]]

Y me gustaría producir una representación de cadena de una tabla como esta, donde las columnas están delimitadas por pestañas y las filas por líneas nuevas.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

es decir
'perro \ t1 \ NCAT \ t2 \ ta \ nrat \ t3 \ t4 \ NBAT \ t5'

Respuesta

19

como no, tal vez:

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

Esto se une a todos las listas internas que usan pestañas, y concatena la lista de cadenas resultante usando líneas nuevas.

Utiliza una función llamada list comprehension para procesar la lista externa.

+0

Necesita convertir los enter a cadenas antes de unirse a ellos. – Dave

+0

deberá asegurarse de que cada elemento en la variable 'lists' sea una cadena, pero aparte de eso, el fragmento de código es extremadamente conciso y expresivo. Realmente debería pasar más tiempo con Python .... –

+0

También puede cambiar la segunda línea a: result = '\ n'.join (' \ t'.join (str (el) para el en la lista) para la lista en listas) – 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 a mantenerlo simple y fácil de leer – nosklo

Cuestiones relacionadas