2009-05-22 6 views
6

Comment faire ce qui suit dans Python 2.2 en utilisant uniquement des modules intégrés?Convertir la liste des listes en chaîne délimitée

J'ai une liste de listes comme ceci:
[['chien', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat' , 5]]

Et à partir de là je voudrais produire une représentation sous forme de chaîne d'un tableau comme celui-ci où les colonnes sont délimitées par des tabulations et les lignes par des retours à la ligne.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

-à-dire
'chien \ t1 \ NCAT \ t2 \ ta \ nrat \ t3 \ t4 \ nbat \ t5'

Répondre

19

Comme cela, peut-être:

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

Ce joint tous les listes internes à l'aide d'onglets, et concatène la liste de chaînes résultante en utilisant les nouvelles lignes.

Il utilise une fonctionnalité appelée list comprehension pour traiter la liste externe.

+0

Vous devez convertir les entiers en chaînes avant de les joindre. – Dave

+0

vous devrez vous assurer que chaque élément de la variable 'lists' est une chaîne, mais à part cela, l'extrait de code est extrêmement concis et expressif. Je devrais vraiment passer plus de temps avec Python .... –

+0

Vous pouvez aussi changer la deuxième ligne en: result = '\ n'.join (' \ t.join (str (el) pour el en liste) pour la liste en listes) – 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 pour le garder simple et facilement lisible – nosklo

Questions connexes