Python字符串格式化 - 旧`%`vs new`str.format`

ava*_*msi 8 python string string-formatting python-2.7

新的格式允许我们这样做:'{:.<12}'.format('##')- 可选的填充字符.
我们可以使用旧格式吗?
(我知道我们可以填空格'%-12s' % '##')

此外,旧的格式允许我们这样做:'%-*s' % (12, '##')- 可变长度.
我们可以使用新的格式吗?

Ana*_*mar 6

为了使用new-format执行可变长度,您可以使用替换嵌套-

>>> '{:{}<{}}'.format('##','.',12)
'##..........'
>>> '{:{}<{}}'.format('##','-',12)
'##----------'
>>> '{:{}<{}}'.format('##','-',20)
'##------------------'
Run Code Online (Sandbox Code Playgroud)

偶数空格作为填充字符-

>>> '{:{}<{}}'.format('##',' ',20)
'##                  '
Run Code Online (Sandbox Code Playgroud)

请注意,您不一定总是需要使用嵌套嵌套,也可以直接使用以下格式指定它们:

>>> '{: <12}'.format('##')
'##          '
Run Code Online (Sandbox Code Playgroud)

您还可以指定每个参数的位置,以决定哪个参数移至何处。范例-

>>> '{2:{0}<{1}}'.format('.',12,'##')
'##..........'
>>> '{0:{1}<{2}}'.format('##','-',20)
'##------------------'
Run Code Online (Sandbox Code Playgroud)