如何在Python f-strings中动态填充数字?

4

我有一个类似这样的f-string:

f"foo-{i:03d}"

这段代码是用来生成读入文件的文件名。问题在于有时候有数百个文件,文件名像foo-001、foo-002等,但有时候有数千个文件,需要使用foo-0001和04d格式。是否有一种动态的方法可以解决这个问题?例如,如果我有文件总数作为变量n,那么我可以这样做:

pad = len(str(n))

但是我要如何在f-string中使用那个pad变量呢?
2个回答

7

嵌套的f字符串:

>>> pad = 4
>>> i = 1
>>> f"foo-{i:>0{pad}}"
'foo-0001'

在我看来,嵌套的f-strings往往会使代码更难阅读。 - mara004
意见不一。我觉得这种写法比其他方式更易读。 - wim
当然可以,但是对于阅读你的代码的人来说,除非他们了解高级f-strings,否则很难理解。相比之下,理解其他解决方案要容易得多。 - mara004

0

不使用f-string,str.zfill()可能更可取:

"foo-" + str(i).zfill( len(str(n)) )

优点:

  • 更简洁的语法
  • 可在旧版 Python 中使用

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接