使用{0:g}去除尾随零时.format()返回ValueError

7 投票
1 回答
6309 浏览
提问于 2025-04-20 23:35

我正在尝试生成一个字符串,这个字符串中偶尔会有带有尾随零的小数。我这里有一个简单的例子,展示了我用 {0:g} 来去掉这些尾随零的尝试:

xn, cod = 'r', 'abc'
ccl = [546.3500, 6785.35416]
ect = [12.350, 13.643241]

text = '${}_{{t}} = {0:g} \pm {0:g}\;{}$'.format(xn, ccl[0], ect[0], cod)
print text

可惜的是,这样返回的是:

ValueError: cannot switch from automatic field numbering to manual field specification

这个问题在 使用 .format() 来格式化带有字段宽度参数的列表 中也提到过,但我还是搞不清楚如何把那里的答案应用到我的问题上。

1 个回答

14

{} 是自动字段编号的用法。{0:g} 则是手动字段编号的用法。

不要把这两种方式混在一起。如果你决定使用手动字段编号,那就要在所有地方都使用它:

text = '${0}_{{t}} = {1:g} \pm {2:g}\;{3}$'.format(xn, ccl[0], ect[0], cod)

撰写回答