python字符串格式化固定宽度

时间:2011-12-08 00:04:32

标签: python string formatting

我想将一堆浮点数放入固定宽度的表中。也就是说,我希望最多使用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 个答案:

答案 0 :(得分:5)

我不确定这是你在寻找什么,因为它不是完全用格式字符串完成的,但是,当事情变得太长时,你可以使用字符串切片来消除尾随字符:

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的专家,所以我可能会遗漏一些东西。