在Python中编写可读的空格分隔文本

4 投票
3 回答
10170 浏览
提问于 2025-04-16 03:59

我有一个包含多个列表的列表,长得像这样:

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 个回答

0

"%10s" % obj 这个写法会让你输出的内容至少占用10个空格,并且把obj的字符串内容放在右边对齐。

"%-10s" % obj 这个写法也是做同样的事情,不过它是把内容放在左边对齐。

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

对我来说,这比用循环的表达方式还要清楚。

10

你需要一个格式字符串:

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

%-15s 的意思是把一个字符串放在15个空格的区域里,并且靠左对齐。下面是输出的结果:

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG

撰写回答