如何用空格填充Python字符串?

769 投票
15 回答
875320 浏览
提问于 2025-04-16 15:48

我想在一个字符串中填充空格。我知道下面这个方法可以用来处理零:

>>> print("'%06d'"%4)
'000004'

但是当我想要这样做的时候,我该怎么办呢?

'hi    '

当然,我可以先测量字符串的长度,然后用 str+" "*leftover 来处理,但我想要一个更简洁的方法。

15 个回答

223

字符串格式化方法可以让你用一些有趣的方式来处理嵌套的关键字参数。最简单的例子是:

>>> '{message: <16}'.format(message='Hi')
'Hi             '

如果你想把 16 作为一个变量传入:

>>> '{message: <{width}}'.format(message='Hi', width=16)
'Hi              '

如果你想传入所有的变量,像整套东西一样:

'{message:{fill}{align}{width}}'.format(
   message='Hi',
   fill=' ',
   align='<',
   width=16,
)

结果就是(你猜对了):

'Hi              '

对于所有这些,你可以使用Python 3.6 及以上版本的 f-字符串

message = 'Hi'
fill = ' '
align = '<'
width = 16
f'{message:{fill}{align}{width}}'

当然,结果是:

'Hi              '
604

如果你想要一个灵活的方法来处理复杂的字符串格式化,建议你使用字符串格式化小语言

你可以使用f-字符串

>>> f'{"Hi": <16} StackOverflow!'  # Python >= 3.6
'Hi               StackOverflow!'

或者使用str.format()方法。

>>> '{0: <16} StackOverflow!'.format('Hi')  # Python >=2.6
'Hi               StackOverflow!'
994

你可以使用 str.ljust(width[, fillchar]) 来实现这个功能:

这个方法会把字符串左对齐,并放在一个指定长度为 width 的字符串中。如果需要的话,会用你指定的 fillchar 来填充(默认是空格)。如果 width 小于字符串的实际长度 len(s),那么就会返回原来的字符串。

>>> 'hi'.ljust(10)
'hi        '

撰写回答