【问题标题】:Python formatting leading zeros and optional decimalsPython 格式化前导零和可选小数
【发布时间】:2018-07-02 21:25:04
【问题描述】:

我正在尝试通过以下方式在 Python 中格式化一些数字:

(number) -> (formatted number)
1 -> 01
10 -> 10
1.1 -> 01.1
10.1 -> 10.1
1.1234 -> 01.1

我可以为此使用什么格式规范?

我试过的:如果没有小数部分,{:04.1f} 无法正常工作,而{:0>2} 仅适用于整数,{:0.2g} 接近但不添加前导零,{:0>4.2g} 添加如果没有小数部分,太多的零。

【问题讨论】:

标签: python


【解决方案1】:

由于您不希望在特殊情况下使用小数点,因此没有格式规则。

解决方法:

"{:04.1f}".format(number).replace(".0", "")

【讨论】:

    【解决方案2】:

    我会根据您的数字是整数还是浮点数进行分支:

    if isinstance(number, int):
        print('{:0>2}'.format(number))
    elif isinstance(number, float):
        print('{:04.1f}'.format(number))
    

    【讨论】:

      【解决方案3】:

      黑客回答:

      l = [1, 10, 1.1, 10.1, 1.1234]
      s = lambda n: '{{{}}}'.format(':04.1f' if isinstance(n, float) else ':02').format(n)
      
      for i in l:
          print(s(i))
      
      # 01
      # 10
      # 01.1
      # 10.1
      # 01.1
      

      其他两个答案都是优秀的 IMO。这只是一种不同的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-20
        • 2012-03-30
        • 2011-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多