我想用空格填充字符串。我知道下面的方法适用于0:
>>> print "'%06d'"%4
'000004'
但我想要这个的时候该怎么办呢?:
'hi '
当然,我可以测量字符串长度和做str+" "*剩,但我想要最短的方式。
我想用空格填充字符串。我知道下面的方法适用于0:
>>> print "'%06d'"%4
'000004'
但我想要这个的时候该怎么办呢?:
'hi '
当然,我可以测量字符串长度和做str+" "*剩,但我想要最短的方式。
当前回答
使用切片不是更python化吗?
例如,用空格填充一个字符串,直到它有10个字符长:
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
在左边填充空格,直到它有15个字符长:
>>> (" " * 15 + x)[-15:]
' string'
当然,它需要知道你想要填充的长度,但它不需要测量你开始时的字符串长度。
其他回答
你可以使用str.ljust(width[, fillchar]):
返回长度为width的字符串中左对齐的字符串。填充使用指定的fillchar(默认为空格)。如果width小于len(s)则返回原始字符串。
>>> 'hi'.ljust(10)
'hi '
使用Python 2.7的字符串迷你格式:
'{0: <8}'.format('123')
这是左对齐,用' '字符填充到8个字符。
一个很好的技巧来代替各种打印格式:
(1)右边空格垫:
('hi' + ' ')[:8]
(2)左侧前导0的垫:
('0000' + str(2))[-4:]
Python中不推荐使用这种方法,但这种逻辑对于缺乏高质量文本格式化功能的语言和宏非常有用。:)
只要去掉0,它就会添加空格:
>>> print "'%6d'"%4
你可以使用列表理解,这也会给你一个关于空格数量的想法,这将是一行。
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '