我想用空格填充字符串。我知道下面的方法适用于0:

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

但我想要这个的时候该怎么办呢?:

'hi    '

当然,我可以测量字符串长度和做str+" "*剩,但我想要最短的方式。


当前回答

使用切片不是更python化吗?

例如,用空格填充一个字符串,直到它有10个字符长:

>>> x = "string"    
>>> (x + " " * 10)[:10]   
'string    '

在左边填充空格,直到它有15个字符长:

>>> (" " * 15 + x)[-15:]
'         string'

当然,它需要知道你想要填充的长度,但它不需要测量你开始时的字符串长度。

其他回答

使用切片不是更python化吗?

例如,用空格填充一个字符串,直到它有10个字符长:

>>> x = "string"    
>>> (x + " " * 10)[:10]   
'string    '

在左边填充空格,直到它有15个字符长:

>>> (" " * 15 + x)[-15:]
'         string'

当然,它需要知道你想要填充的长度,但它不需要测量你开始时的字符串长度。

你可以试试这个:

print "'%-100s'" % 'hi'

你可以使用str.ljust(width[, fillchar]):

返回长度为width的字符串中左对齐的字符串。填充使用指定的fillchar(默认为空格)。如果width小于len(s)则返回原始字符串。

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

你也可以居中你的字符串:

'{0: ^20}'.format('nice')

你可以使用列表理解,这也会给你一个关于空格数量的想法,这将是一行。

"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello                 '