如何在字符串左右两侧填充空格?

70

我有两种情况需要将字符串填充到特定长度,分别在左和右方向上(在不同的情况下)。例如,我有以下字符串:

TEST

但我需要创建字符串变量

_____TEST1

这样实际的字符串变量长度为10个字符(在这种情况下由5个空格引导)。 注意:我使用下划线表示空格(否则在SO上的markdown看起来不正确)。

我还需要弄清楚如何反转它并从另一个方向填充空格:

TEST2_____

有没有任何字符串帮助函数可以做到这一点?还是我需要创建一个字符数组来管理它?

另外请注意,我正在尝试保持字符串长度为变量(在上面的示例中使用了长度为10,但我需要能够更改此长度)。

任何帮助都将非常棒。如果有任何python函数可以管理此事,我宁愿避免从头开始编写。

谢谢!


2个回答

142
你可以查看 str.ljuststr.rjust
另一种选择可能是使用 format 方法:
>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'
>>> '{:^30}'.format('centered')
'           centered           '
>>> '{:*^30}'.format('centered')  # use '*' as a fill char
'***********centered***********'

2
@Brett -- 看起来那些已经弃用了。我已经更新为另一种可行方案,它不是;-) - mgilson
16
str.ljustrjust方法并未被弃用;你只是链接到了来自string模块的古老函数,这些函数仅在2.3版本之前内置类型不像类,只有作为特殊情况才有方法时才需要使用。 - abarnert
你如何将30变成一个变量? - Raksha
5
@Raksha -- 像'{:>{width}}'.format('right aligned', width=30)这样的代码可行。 - mgilson

17

通过 f-strings(Python 3.6+):

>>> l = "left aligned"
>>> print(f"{l:<30}")
left aligned                  

>>> r = "right aligned"
>>> print(f"{r:>30}")
                 right aligned

>>> c = "center aligned"
>>> print(f"{c:^30}")
        center aligned        

5
然而,这些并非只适用于f-string,只有在您希望对齐字符串(而不是数字、元组或列表)时才有效。您可以在f-string中使用与format相同的语法,就像另一个答案中所示。例如:f'{right_stuff:>{width}}'f'{left_stuff:<{width}}' - Fritz

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