Scrivendo white-space testo delimitato per essere leggibile in Python
-
02-10-2019 - |
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?
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.