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

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

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

'hi    '

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


当前回答

你可以试试这个:

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

其他回答

字符串格式方法允许您使用嵌套的关键字参数做一些有趣的事情。最简单的例子:

>>> '{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              '

使用Python 2.7的字符串迷你格式:

'{0: <8}'.format('123')

这是左对齐,用' '字符填充到8个字符。

使用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:里面有很多好东西。

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

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

正确的方法是使用官方文档中描述的Python格式语法

对于这种情况,它将简单地为: {10} .format(“嗨”) 输出: “嗨”

解释:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

你所需要知道的就是这些^。

更新: 从python 3.6开始,字面值字符串插值更加方便!

foo = 'foobar'
print(f'{foo:10} is great!')
# foobar     is great!