2011-12-08 34 views
2

我想把一堆浮点数字放到一个固定宽度的表格中。也就是说,我最多需要12个字符。我希望至少使用10位小数(如果可用);但是,如果小数点后10位使其占用多于12个字符,则循环。我最初的想法是尝试这样的事情python字符串格式化固定宽度

# 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)) 

必须有一种方式来实现,而不需要写一个函数来检查每一个数字,并给出了基于上述条件格式化。我错过了什么?

+0

写入函数有什么问题? –

+1

你为什么不使用科学记数法?我不确定你的要求的原因,但是你提出的格式(有小数点跳到所有地方)对于任何具有工程/科学/数学类型背景的人来说都不是直观的或可读的。 – wim

回答

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东西的专家,所以我可能失去了一些东西。

+0

谢谢,这很有道理。我最终只是写了一个函数。 – jseabold