.format() 在使用 0:g 删除尾随零时返回 ValueError
Posted
技术标签:
【中文标题】.format() 在使用 0:g 删除尾随零时返回 ValueError【英文标题】:.format() returns ValueError when using 0:g to remove trailing zeros.format() 在使用 0:g 删除尾随零时返回 ValueError 【发布时间】:2014-11-04 16:18:33 【问题描述】:我正在尝试生成一个字符串,其中包含一个带有尾随零的偶尔浮点数。这是文本字符串的 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
这个问题Using .format() to format a list with field width arguments 报告了同样的问题,但我不知道如何将那里给出的答案应用于这个问题。
【问题讨论】:
我不确定我是否理解您使用g
想要达到的目的。浮点文字中的尾随零没有任何意义,因此 546.3500
与 546.35
完全相同(无论您是否愿意,它们都会打印出相同的数字)。
@Blckknght 试试print '0 0:g'.format(50.0)
。它们的打印方式不同。
当我再次阅读问题时,您是否想要:0g
而不是0:g
?我不确定前者是否很有用,但它是有效的。
@Blckknght 我从这里采用了0:g
格式:***.com/a/2440708/1391441
啊,所以 0
只是从那篇帖子中继承下来的(只格式化一个值。我建议使用 "$_t = :g \pm :g\;$"
作为你的格式字符串,然后在任何地方使用自动编号。它是只有当您混合使用自动和手动编号时才会出现错误。我的 cmets 询问是否由于编号导致的异常隐藏了一些更深层次的问题(格式无法按您想要的方式工作),但听起来像:g
会做你想要的。
【参考方案1】:
使用自动字段编号。
0:g
使用手动字段编号。
不要将两者混为一谈。如果您要使用手动字段编号,请在任何地方使用它:
text = '$0_t = 1:g \pm 2:g\;3$'.format(xn, ccl[0], ect[0], cod)
【讨论】:
很好的答案 unubtu,小修正,也许你的意思是:$0_t = 1:g \pm 2:g\;3$
?
谢谢加布里埃尔。我不确定要使用什么字段编号,因为原始代码使用了两次0:g
,但有四个参数...以上是关于.format() 在使用 0:g 删除尾随零时返回 ValueError的主要内容,如果未能解决你的问题,请参考以下文章