字符串格式内的字符串格式

时间:2018-03-13 14:44:39

标签: python string

我面对这种奇怪的情况:

我正在使用str格式为我的文件名提供某种模式。例如,我使用前缀,然后使用固定长度的数字来创建文件名。当我还需要控制固定长度的数字长度时出现问题:

prefix = 'action1'
n = 6    
for i in range(0, 6):
    filename = '{}_{:06}.jpg'.format(prefix, i)
    print(filename)
  

action1_000000.jpg
  action1_000001.jpg
  ...

我提出了这个结合了新旧字符串格式的想法,但它很奇特且肯定容易被弃用:

n = 4    
for i in range(0, 6):
    filename = ('{}_{:0%d}.jpg' % n).format(prefix, i)
    print(filename)
  

action1_0000.jpg
  action1_0001.jpg
  ...

那么,是否有其他方法可以控制字符串格式(:06)内的字符串格式({}_{:06}.jpg部分)?

2 个答案:

答案 0 :(得分:2)

您可以在{}的{​​{1}}内使用{}。试试这个:

str.format()

参见" 嵌套参数和更复杂的例子"在this link

或者,使用f-string feature

'{}_{:0{}}.jpg'.format(prefix, i, 4)

答案 1 :(得分:0)

为什么不使用.rjust()?

prefix = 'action1_'
n = 6
counter = 1
filename = prefix + str(counter).rjust(n, '0')
print(filename)