【发布时间】:2018-05-21 10:13:53
【问题描述】:
我已经知道.format 很长时间了,但是当我尝试在如下字符串中包含浮点格式时:
"ab_{}_cd{}_e_{}_{}_{}_val={0:.5f}_{}".format(string1,str(2),string2,string3,string4,str(0.12345678),string5)
在上面的例子中,string1-5 表示这个例子中包含的随机字符串。
返回如下错误ValueError: cannot switch from automatic field numbering to manual field specification
经过一番搜索,这个问题似乎确实有解决方案Using .format() to format a list with field width arguments
上面的链接显示我需要格式化字符串中的所有{} 以实现我想要的格式。我浏览了官方文档 https://docs.python.org/2/library/string.html 和 https://docs.python.org/2/library/stdtypes.html#str.format 并没有太多解释我在寻找什么的方式。
期望的输出:
关于如何将 .format 选项的自动字段规范转换为手动字段规范的说明,只需格式化我提供的浮点变量,而保留所有其他 string1-5 变量未格式化。虽然我可以只使用 round() 之类的东西或类似的 numpy,但这可能会导致问题,我觉得通过 .format 示例我会学得更好。
【问题讨论】:
-
我认为您误解了错误消息。
{0:.5f}表示“取第零个参数并将其格式化为.5f”。 (错误消息告诉您,如果您通过其序号引用位置参数,那么您需要通过它们的序号引用 all 位置参数。)您的意思是像{:0.5f}这样的东西吗? ?此外,要使f格式正常工作,倒数第二个参数不应是字符串,而是实际的浮点数。
标签: python string.format