2010-10-29 22 views
1

j'ai une grande liste de listes comme:listes d'impression dans un fichier dans un format spécial en python

X = [['a','b','c','d','e','f'],['c','f','r'],['r','h','l','m'],['v'],['g','j']] 

chaque liste intérieure est une phrase et les membres de ces listes sont en fait le mot de cette phrase. Je veux écrire cette liste dans un fichier tel que chaque phrase (liste interne) est dans une ligne séparée dans le fichier, et chaque ligne a un nombre correspondant à l'emplacement de cette liste interne (phrase) dans le grand ceci. Dans le cas ci-dessus. Je veux que la sortie ressemble à ceci:

1. a b c d e f 
2. c f r 
3. r h l m 
4.v 
5.g j 

J'ai besoin qu'ils soient écrits dans ce format dans un fichier "texte". Quelqu'un peut-il me suggérer un code pour cela en python? Merci

Répondre

5
with open('somefile.txt', 'w') as fp: 
    for i, s in enumerate(X): 
    print >>fp, '%d. %s' % (i + 1, ' '.join(s)) 
+1

ou 'fp.write ("{ligne}. {Phrase} \ n" .format (ligne = i, phrase = » » .join (s)))' si vous ne n'aime pas la syntaxe d'impression '>>'. – katrielalex

+0

Il y a un léger problème avec ça, le compteur commence toujours par 2! – Hossein

+0

imprimer >> fp, '% d. % s '% (i,' '.join (s)) i + = 1 fera l'affaire;) – Hossein

0
with open('file.txt', 'w') as f: 
    i=1 
    for row in X: 
     f.write('%d. %s'%(i, ' '.join(row))) 
     i+=1 
+1

Il vous manque les sauts de ligne. –

+0

«énumérer» est là pour une raison. – katrielalex

+0

Je ne suis pas sûr qu'énumérer() créera un objet générateur, donc enumerate() peut prendre beaucoup de mémoire/cpu pour les grandes listes. Si enumerate() va créer un générateur, l'exemple précédent peut être préférable. – seriyPS