Python - 使用格式字符串长度变量而不是固定的变量?

时间:2015-11-05 08:13:13

标签: python string string-formatting

例如,我可以这样做:

"%.2s" % ('aaa')
'aa'

"%.1s" % ('aaa')
'a'

但是我怎样才能使这个部分像.2变量一样,所以我可以传递任何数字,它会相应地格式化,就好像我会传递类似的东西:

"%.%ss %" (1, 'aaa') # Pseudo code
'a'

2 个答案:

答案 0 :(得分:4)

将宽度指定为*,实际宽度将取自下一个位置参数:

"%.*s" % (1, 'aaa')

str.format() method更灵活,您可以插入任何参数,而不仅仅是宽度:

"{:.{width}s}".format('aaa', width=1)

演示:

>>> "%.*s" % (1, 'aaa')
'a'
>>> "%.*s" % (2, 'aaa')
'aa'
>>> "{:.{width}s}".format('aaa', width=1)
'a'
>>> "{:.{width}s}".format('aaa', width=2)
'aa'

额外占位符可用于构成格式规范的任何元素:

>>> "{:{align}{width}s}".format('aaa', align='<', width=4)
'aaa '
>>> "{:{align}{width}s}".format('aaa', align='>', width=4)
' aaa'

答案 1 :(得分:0)

使用format,如下所示:

>>> outputNumber=2
>>> '{:.{}}'.format('MyString', outputNumber)
'My'
>>> outputNumber=5
>>> '{:.{}}'.format('MyString', outputNumber)
'MyStr'
>>>