2017-08-07 3 views
2
def chunks(l, n): 
    for i in range(0, len(l), n): 
     yield l[i:i+n] 
boleta.write(str(list(chunks(carrito, 3)))) 

Ich benutze diesen Code, um eine Unterliste von je 3 Elementen zu erstellen, aber ich muss die Unterliste Zeile für Zeile nicht alle in einer Zeile schreiben.Wie schreibe ich Unterlisten Zeile für Zeile in eine Textdatei?

Was ich habe:

[[1, '001', 40], [1, '002', 20]] 

Was ich brauche:

[1, '001', 40] 
[1, '002', 20] 

Antwort

3

Sie sollten nicht das gesamte Ergebnis in eine Liste konvertieren und dann die Umwandlung in einen String, sollten Sie Iterierte durch die Ausgabe, und wandeln jede einzelne Unterliste in eine Zeichenfolge um. Wie:

for sublist in chunks(carrito, 3): 
    boleta.write(str(sublist)) 
    boleta.write('\n') 

Oder Sie könnten die Ausgaben '\n'.join(..) zusammen und schreiben Sie dann den resultierenden String, wie:

boleta.write('\n'.join(str(subl) for subl in chunks(carrito, 3))) 

Auf einigen Systemen '\n' ist nicht die Linie Separator. Sie können das Programm universeller machen mit os.linesep:

from os import linesep 

boleta.write(linesep.join(str(subl) for subl in chunks(carrito, 3))) 
+1

Vielen Dank, es funktioniert sehr gut! –

Verwandte Themen