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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top