我想用空格填充字符串。我知道下面的方法适用于0:
>>> print "'%06d'"%4
'000004'
但我想要这个的时候该怎么办呢?:
'hi '
当然,我可以测量字符串长度和做str+" "*剩,但我想要最短的方式。
我想用空格填充字符串。我知道下面的方法适用于0:
>>> print "'%06d'"%4
'000004'
但我想要这个的时候该怎么办呢?:
'hi '
当然,我可以测量字符串长度和做str+" "*剩,但我想要最短的方式。
当前回答
使用str.ljust ():
>>> 'Hi'.ljust(6)
'Hi '
你还应该考虑string.zfill(), str.rjust()和str.center()来格式化字符串。它们可以被链接,并指定'fill'字符,如下所示:
>>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40)
' 00000003 blindmice.... '
这些字符串格式化操作具有在Python v2和v3中工作的优点。
找个时间看看pydoc str:里面有很多好东西。
其他回答
字符串格式方法允许您使用嵌套的关键字参数做一些有趣的事情。最简单的例子:
>>> '{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-strings:
message = 'Hi'
fill = ' '
align = '<'
width = 16
f'{message:{fill}{align}{width}}'
当然,结果是:
'Hi '
你也可以居中你的字符串:
'{0: ^20}'.format('nice')
从Python 3.6开始,你可以这样做
>>> strng = 'hi'
>>> f'{strng: <10}'
字面值字符串插值。
或者,如果你的填充大小是一个变量,就像这样(谢谢@Matt M.!):
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
使用Python 2.7的字符串迷你格式:
'{0: <8}'.format('123')
这是左对齐,用' '字符填充到8个字符。
使用切片不是更python化吗?
例如,用空格填充一个字符串,直到它有10个字符长:
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
在左边填充空格,直到它有15个字符长:
>>> (" " * 15 + x)[-15:]
' string'
当然,它需要知道你想要填充的长度,但它不需要测量你开始时的字符串长度。