Python 字符串格式化固定宽度
我想把一堆浮点数放进一个固定宽度的表格里。也就是说,我希望每个数字最多占用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
的东西不是很专业,所以可能会漏掉一些细节。