Python 字符串格式化固定宽度

2 投票
1 回答
7773 浏览
提问于 2025-04-17 07:56

我想把一堆浮点数放进一个固定宽度的表格里。也就是说,我希望每个数字最多占用12个字符。我希望至少使用10位小数(如果有的话);但是,如果10位小数让它超过12个字符,那就要进行四舍五入。我的最初想法是尝试这样的方式:

# I only want 12 characters used total

num1 = 0.04154721841
num2 = 10.04154721841

# not what I want
print "{:<12.11g}".format((num1))
# what I want
print "{:<12.10f}".format((num1))

# not what I want
print "{:<12.10f}".format((num2))
# what I want
print "{:<12.11g}".format((num2))

应该有办法做到这一点,而不需要写一个函数来检查每个数字,并根据上述条件进行格式化。我漏掉了什么呢?

1 个回答

6

我不太确定这是不是你想要的,因为这并不是完全通过格式字符串来实现的。不过,你可以使用字符串切片的方法,来截掉那些多余的字符,当内容太长的时候:

num1 = 0.04154721841
num2 = 10.04154721841
num3 = 1002.04154721841

print "{0:<12.11g}".format(num1)[:12]
print "{0:<12.11g}".format(num2)[:12]
print "{0:<12.11g}".format(num3)[:12]

输出结果:

0.0415472184
10.041547218
1002.0415472

除此之外,我觉得你可以写一个函数,虽然我对str.format的东西不是很专业,所以可能会漏掉一些细节。

撰写回答