Написание текста с пробелами для удобства чтения в Python - PullRequest
4 голосов
/ 11 сентября 2010

У меня есть список списков, который выглядит примерно так:

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  

Столбцы не располагаются аккуратно из-за различий в длине первого элемента в каждом внутреннем списке. Как я могу написать соответствующее количество пробелов между первым и вторым элементами, чтобы второй столбец выстроился в линию для удобства чтения?

Ответы [ 3 ]

10 голосов
/ 11 сентября 2010

Вам нужна строка формата:

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

%-15s означает выравнивание по левому краю поля из 15 пробелов для строки. Вот вывод:

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG
1 голос
/ 11 сентября 2010
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) )

для меня даже яснее, чем выражение с петлей

0 голосов
/ 11 сентября 2010

"%10s" % obj обеспечит минимум 10 пробелов со строковым представлением obj, выровненным справа.

"%-10s" % obj делает то же самое, но выравнивается влево.

...