Python: 将文本格式化为特定列
我想把一些文本格式化成蛋白质数据银行文件格式。简单来说,我需要把文本放在特定的列里。目前我使用的是ljust
和rjust
来进行格式化,但我觉得应该有一个更简单的函数,可以让我指定一个单词和它应该开始的列。
如果有人能帮我,我会非常感激。谢谢!
如果我在StackOverflow上找不到答案,请告诉我该往哪个方向找。
2 个回答
0
你可以使用字符串的“格式”功能来对齐文本。具体的用法可以参考这个链接:http://docs.python.org/library/string.html#formatspec。
在Mark Summerfield的书《Python 3编程:Python语言完全入门》中,你可以在文件print_unicode.py里找到关于列对齐的示例代码。
1
下面是一个例子,展示了如何使用 str.format 来格式化一个“坐标记录描述”。
CRD='{r:<6}{a:>9.3f}{b:>9.3f}{c:>9.3f}{alpha:7.2f}{beta:7.2f}{gamma:7.2f} {sp:<11}{z:>4}'
data=dict(r='CRYST1',a=117,b=15.0,c=39,alpha=90,beta=90,gamma=90,sp='P 21 21 21',z=8)
print(CRD.format(**data))
# CRYST1 117.000 15.000 39.000 90.00 90.00 90.00 P 21 21 21 8
格式说明符 CRD
的意思是:
{r:<6}
这个部分告诉 format
要把 str(r)
的值放进去,左对齐,宽度为6个字符。
{a:>9.3f}
这个部分告诉 format
要把 a
的浮点数值放进去,右对齐,总宽度为9个字符,小数点后保留3位。
关于格式说明符的详细信息,可以在 这里 找到。