Schreiben white-space getrennten Text zu sein für Menschen lesbare in Python
-
02-10-2019 - |
Frage
Ich habe eine Liste von Listen, die etwa wie folgt aussieht:
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
Ich schreibe die Informationen in einer Datei wie folgt aus:
for i in data:
for j in i:
file.write('\t')
file.write(j)
file.write('\n')
Die Ausgabe sieht wie folgt aus:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Die Spalten in einer Reihe aufstellen nicht ordentlich wegen Änderung der Länge des ersten Elements in jeder internen Liste. Wie kann ich schreibe geeignete Mengen von Leerzeichen zwischen dem ersten und zweiten Elemente, um die zweite Spaltenleitung für die menschliche Lesbarkeit bis zu machen?
Lösung
Sie benötigen ein Format-String:
for i,j in data:
file.write('%-15s %s\n' % (i,j))
%-15s
Mittel links für eine Zeichenfolge, die einen 15-Raum Feld rechtfertigen. Hier ist die Ausgabe:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Andere Tipps
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
with open('myfile.txt', 'w') as file:
file.write('\n'.join('%-15s %s' % (i,j) for i,j in data) )
für mich ist noch deutlicher als Ausdruck mit Schleife
"%10s" % obj
wird Minimum gewährleisten 10 Räume mit der Stringdarstellung von obj auf der rechten Seite ausgerichtet ist.
"%-10s" % obj
tut das gleiche, aber ausrichtet nach links.