Python格式化字符串:前导零和可选小数

5
我正在尝试以以下方式使用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} 如果没有小数部分会添加太多的零。


https://dev59.com/-3E95IYBdhLWcg3wQ7mb 很接近,但不是重复问题,因为我的前导零需要不同的答案。 - BrtH
可能是在包含小数点的数字前添加前导零的格式的重复问题。 - cacti5
3个回答

6

针对特殊情况不需要小数点,因此没有格式化规则。

解决方法:

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

1
粗略的回答:
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

另外两个答案在我看来都更好。这只是一种不同的方法。

1

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接