【问题标题】:python .format including float formattingpython .format 包括浮点格式
【发布时间】: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.htmlhttps://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


【解决方案1】:

在您的代码中删除四舍五入前的零

"ab_{}_cd{}_e_{}_{}_{}_val={:.5f}_{}".format(string1,str(2),string2,string3,string4,str(0.12345678),string5)

注意:为什么它不起作用是,您可以将 {} 中的索引作为 {0}、{1} 提及或保留所有这些,但您不能保留少数 {} 有索引而少数没有任何索引。

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多