Python:字符串格式化程序对齐中心

42
print('%24s' % "MyString")     # prints right aligned
print('%-24s' % "MyString")    # prints left aligned

如何将它居中打印?有没有一种快速的方法来做到这一点?

我不想让文本位于屏幕中央。我希望它位于那个24个空格的中心。如果我必须手动完成,添加相同数量的空格之后和文本前面的空格是什么数学原理?

4个回答

64

使用新风格的format方法,而不是旧风格的%运算符,后者没有居中功能:

print('{:^24s}'.format("MyString"))

哦,哇,这对像我一样的 Python 新手来说应该很有帮助;如果没有问这个问题,我可能不会注意到它。 - Saravanabalagi Ramachandran
该方法会随着字符串长度的增加而减少空间,直到没有空间为止。 - monkey
6
打印(f'{"MyString":^24s}') - user7048748
结尾的 s 有什么作用? - Raul Chiarella
s代表字符串 - 还有其他格式规范,如十进制数字的d,定点浮点数的f等,请参见https://docs.python.org/3/library/string.html。 - Błotosmętek

39

你可以使用 str.center() 方法。

在您的情况下,应该是: "MyString".center(24)


11
在我看来,这种方法比格式选项更好,因为它清楚地表达了意图。而且,与默认的空格填充字符不同,人们可以使用其他填充字符。以下是一个示例:print("MyString".center(24, "-")--------MyString-------- - gboffi
4
@gboffi,使用format也可以更改填充字符:print('{:#^24s},'.format("MyString")) - Błotosmętek
1
这个方法允许我们使用旧的格式化风格print('%24s'%“MyString”。center(24)) - Saravanabalagi Ramachandran

10

Python 3:

您可以按照以下语法进行操作:

stringName.center(width,fillChar)

在你的例子中:
"MyString".center(24," ")

2
理想情况下,您应该使用.format()方法。
这个资源解释了center()方法,以及其他一些在这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接