在Python中编写可读的空格分隔文本
我有一个包含多个列表的列表,长得像这样:
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