漂亮地打印浮点数列表的列表?
基本上,我需要把一系列的温度读数放进一个文本文件里。这是一个用空格分隔的元素列表,每一行代表某个东西(我也不太清楚,反正就是被强行放进一个Fortran模型里,真让人头疼)。我大致上是在我们小组这边处理这个事情,负责提取这些温度读数并把它们放进文本文件。
简单来说,我有一个像这样的列表(但元素要多得多):
temperature_readings = [ [1.343, 348.222, 484844.3333], [12349.000002, -2.43333]]
以前我们只是把这些数据直接放进文件里,但不幸的是,有些人总是喜欢直接查看这个文本文件,挑选某些列并修改一些东西(为了测试……我也不太清楚……)。但是他们总是抱怨列对不齐,他们希望上面的列表能像这样打印出来:
1.343 348.222 484844.333
12349.000002 -2.433333
这样那些漂亮的小数就能对齐了。有没有简单的方法可以做到这一点?
4 个回答
1
如果你想显示固定的小数位数(这在处理真实的温度读数时可能会比较合理),那么下面这样的代码可以产生很不错的输出效果:
for line in temperature_readings:
for value in line:
print '%10.2f' % value,
print
输出结果:
1.34 348.22 484844.33 12349.00 -2.43
2
%(字符串格式化)操作符现在已经不推荐使用了。
你可以用str.format来进行漂亮的输出,适合在Python中使用。
像这样可能对你有帮助:
for set in temperature_readings:
for temp in set:
print "{0:10.4f}\t".format(temp),
print
这段代码会输出以下内容:
1.3430 348.2220 484844.3333 12349.0000 -2.4333
你可以在这里了解更多信息:http://docs.python.org/tutorial/inputoutput.html#fancier-output-formatting
2
你可以这样进行右侧填充:
str = '%-10f' % val
如果想要左侧填充,可以这样做:
set = '%10f' % val
或者你也可以结合使用填充,并将小数点后精确到4位:
str = '%-10.4f' % val
:
import sys
rows = [[1.343, 348.222, 484844.3333], [12349.000002, -2.43333]]
for row in rows:
for val in row:
sys.stdout.write('%20f' % val)
sys.stdout.write("\n")
1.343000 348.222000 484844.333300
12349.000002 -2.433330