La escritura de espacio en blanco de texto delimitado para ser legible por humanos en Python
-
02-10-2019 - |
Pregunta
Tengo una lista de listas que se ve algo como esto:
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
escribir la información en un archivo de la siguiente manera:
for i in data:
for j in i:
file.write('\t')
file.write(j)
file.write('\n')
Las miradas de salida como la siguiente:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Las columnas no se alinean perfectamente debido a la variación en la longitud del primer elemento en cada lista interna. ¿Cómo puedo escribir cantidades apropiadas de espacio en blanco entre el primer y segundo elementos para hacer la segunda línea de la columna para facilitar su legibilidad humana?
Solución
Se necesita una cadena de formato:
for i,j in data:
file.write('%-15s %s\n' % (i,j))
medios %-15s
justificación a la izquierda de un campo de 15 espacio para una cadena. Aquí está la salida:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Otros consejos
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) )
para mí es aún más claro que la expresión con el lazo
"%10s" % obj
asegurará mínimo de 10 plazas con la representación de cadena de obj alineado a la derecha.
"%-10s" % obj
hace lo mismo, pero se alinea a la izquierda.