2014-09-09 3 views
2

Désolé de poser une question si triviale mais je ne trouve pas la réponse de toute façon et c'est ma première journée en utilisant Python (besoin de travailler). Pensez mon problème tente d'utiliser Python comme C. Quoi qu'il en soit, voici ce que j'ai:Python - Itérer à travers une liste de liste avec une sortie spécifiquement formatée; sortie de fichier

for i in data: 
    for j in i: 
     print("{}\t".format(j)) 

Ce qui me donne des données sous forme de

elem[0][0] 
elem[1][0] 
elem[2][0] 
... 
elem[0][1] 
elem[1][1] 
... 

dire à la fois. Ce que je veux vraiment faire, c'est accéder directement à chaque élément pour pouvoir sortir la liste des données de la liste dans un fichier où les éléments sont séparés par des tabulations, pas des virgules.

Voici mon abâtardi code Python pour sortir le tableau à un fichier:

k=0 
with open("Output.txt", "w") as text_file: 
    for j in data: 
     print("{}".format(data[k]), file=text_file) 
     k += 1 

Donc, fondamentalement, j'ai une liste de listes que je veux enregistrer dans un fichier délimité par des tabulations/format séparé, mais actuellement il sort comme une virgule séparée. Mon approche impliquerait de réitérer à travers les listes à nouveau, élément par élément, et d'enregistrer la sortie en forçant dans les onglets.

est ici des extraits de données (bien changé aux valeurs sans signification)

data 
['a', 'a', 306518, ' 1111111', 'a', '-', .... ] 
['a', 'a', 306518, ' 1111111', 'a', '-', .... ] 
.... 

text_file 
a a 306518 1111111 a -.... 
a a 306518 1111111 a -.... 
.... 
+0

Seriez-vous en mesure de donner un exemple de votre entrée et sortie attendue. Par exemple. Un extrait de 'data' et ce que vous attendez d'être affiché dans la sortie' text_file' –

+0

Ajouté maintenant, merci. – Rob

+0

Merci, même s'il a été répondu sans les informations supplémentaires que j'ai demandées, l'information étant là, il est beaucoup plus utile à d'autres personnes regardant cette question pour information :) –

Répondre

0

si les données sont quelque chose comme ça '[[1,2,3], [2,3,4]]'

for j in data: 
    text_file.write('%s\n' % '\t'.join(str(x) for x in j)) 
+0

Fonctionne parfaitement merci! Ma réputation est trop basse pour voter, mais vraiment, merci beaucoup. – Rob

+0

@Rob si cela a fonctionné pour vous alors vous pouvez et devez * accepter * la réponse (cliquez sur cette coche que vous voyez par la réponse) – Ajean

+0

@Ajean Merci pour le conseil, je l'ai fait tout à l'heure. – Rob

1
for i in data: 
    print("\t".join(i)) 
+0

Cela a fonctionné parfaitement pour les données que j'ai lues dans un fichier, mais pour une raison quelconque pas une fois que les données ont changé (lire dans un fichier avec certaines données, manipulé, ne fonctionne pas). Reçu l'erreur: TypeError: séquence élément 2: instance str attendue, int trouvé. – Rob

+0

Bien sûr, alors faites 'map (str, i)' au lieu de simplement 'i' pour convertir tous les éléments en chaînes. Ce sera toujours très concis. –

0

Je pense que cela devrait fonctionner:

with open(somefile, 'w') as your_file: 
    for values in data: 
     print("\t".join(valeues), file=your_file) 
Questions connexes