Написание разграниченного текста белого пространства, чтобы быть читаемым человеком в Python
-
02-10-2019 - |
Вопрос
У меня есть список списков, которые выглядят что-то подобное:
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
Я пишу информацию в файл, как это:
for i in data:
for j in i:
file.write('\t')
file.write(j)
file.write('\n')
Вывод выглядит так:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Столбцы не выделяются аккуратно из-за изменений в длине первого элемента в каждом внутреннем списке. Как я могу написать соответствующие количества пробелов между первыми и вторыми элементами, чтобы сделать вторую колонну линию для чистябольности человека?
Решение
Вам нужен строка формата:
for i,j in data:
file.write('%-15s %s\n' % (i,j))
%-15s
означает, что оправдают 15-космическое поле для строки. Вот вывод:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Другие советы
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) )
Для меня даже яснее выражения с петлей
"%10s" % obj
обеспечит минимум 10 пробелов со строковым представлением obj, выровненного справа.
"%-10s" % obj
делает то же самое, но выравнивается слева.
Не связан с StackOverflow