Python: 将文本格式化为特定列

1 投票
2 回答
1788 浏览
提问于 2025-04-17 01:21

我想把一些文本格式化成蛋白质数据银行文件格式。简单来说,我需要把文本放在特定的列里。目前我使用的是ljustrjust来进行格式化,但我觉得应该有一个更简单的函数,可以让我指定一个单词和它应该开始的列。

如果有人能帮我,我会非常感激。谢谢!

如果我在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位。

关于格式说明符的详细信息,可以在 这里 找到。

撰写回答