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

Python .format()在使用{0:g}删除尾随零时返回ValueError,python,string,formatting,floating-point-precision,Python,String,Formatting,Floating Point Precision,我试图生成一个字符串,其中包含一个偶尔带有尾随零的浮点。这是一个文本字符串的MWE,我试图用{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 s

我试图生成一个字符串,其中包含一个偶尔带有尾随零的浮点。这是一个文本字符串的MWE,我试图用
{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

这个问题报告了同一个问题,但我不知道如何将这里给出的答案应用于这个问题。

{}
使用自动字段编号。
{0:g}
使用手动字段编号

不要把两者混为一谈。如果要使用手动字段编号,请在任何地方使用:

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

我不确定我是否理解您试图通过
g
实现的目标。浮点文本中的尾随零没有任何意义,因此
546.3500
546.35
的数字完全相同(无论您是否希望,它们都将以相同的方式打印出来)。@Blckknght try
打印“{0}{0:g}”。格式(50.0)
。当我再次阅读问题时,您是否希望
{0:g}
而不是
{0:g}
?我不确定前者是否有用,但它是有效的。@Blckknght我从这里获取了
{0:g}
格式:啊,所以
0
只是从那篇文章中继承过来的(was格式只有一个值。我建议使用
“${}{t}={:g}\pm{:g}\{
作为您的格式字符串,在任何地方使用自动编号。只有当您混合使用自动和手动编号时,才会出现错误。我的评论是,由于编号而产生的异常是否隐藏了一些更深层次的问题(在这种情况下,格式无法按照您的要求工作),但听起来像是
{:g}
将完全满足您的要求。非常好的回答unubtu,轻微的更正,也许您的意思是:
${0}{{t}={1:g}\pm{2:g}\;{3}$
?谢谢Gabriel。我不确定要使用什么字段号,因为原始代码使用了两次
{0:g}
,但有四个参数。。。