Domanda

Ho una lista di liste che sembra qualcosa di simile:

data = [['seq1', 'ACTAGACCCTAG'],
        ['sequence287653', 'ACTAGNACTGGG'],
        ['s9', 'ACTAGAAACTAG']]

I scrivere le informazioni in un file in questo modo:

for i in data:
    for j in i:
        file.write('\t')
        file.write(j)
    file.write('\n')

Gli sguardi di uscita come questo:

seq1   ACTAGACCCTAG  
sequence287653   ACTAGNACTGGG  
s9   ACTAGAAACTAG  

Le colonne non si allineano ordinatamente a causa della variazione della lunghezza del primo elemento dell'elenco interno. Come posso scrivere adeguate quantità di spazio bianco tra il primo e il secondo elemento di fare la seconda linea di colonna per la leggibilità umana?

È stato utile?

Soluzione

Hai bisogno di una stringa di formato:

for i,j in data:
    file.write('%-15s %s\n' % (i,j))

mezzi %-15s lasciato giustificare un campo di 15-spazio per una stringa. Ecco l'output:

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG

Altri suggerimenti

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) )

per me è ancora più chiaro che l'espressione con il ciclo

"%10s" % obj garantirà minimo 10 posti con la rappresentazione di stringa di obj allineato a destra.

"%-10s" % obj fa la stessa cosa, ma allinea a sinistra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top