Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing white-space delimited text to be human readable in Python

I have a list of lists that looks something like this:

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

I write the information to a file like this:

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

The output looks like this:

seq1   ACTAGACCCTAG  
sequence287653   ACTAGNACTGGG  
s9   ACTAGAAACTAG  

The columns don't line up neatly because of variation in the length of the first element in each internal list. How can I write appropriate amounts of whitespace between the first and second elements to make the second column line up for human readability?

like image 974
Jake Avatar asked Dec 22 '22 23:12

Jake


2 Answers

You need a format string:

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

%-15s means left justify a 15-space field for a string. Here's the output:

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG
like image 188
Mark Tolonen Avatar answered Dec 26 '22 12:12

Mark Tolonen


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

for me is even clearer than expression with loop

like image 41
Tony Veijalainen Avatar answered Dec 26 '22 10:12

Tony Veijalainen