基本上我必须将一系列温度读数转储到文本文件中。这是一个以空格分隔的元素列表,其中每一行代表一些东西(我不知道,它只是强制进入fortran模型, shudder )。我或多或少地从我们的小组那边处理它,它正在提取那些温度读数并将它们转储到文本文件中。
基本上一个简单的例子是我有一个这样的列表(但有更多的元素):
temperature_readings = [ [1.343, 348.222, 484844.3333], [12349.000002, -2.43333]]
过去我们只是把它放到一个文件中,不幸的是有些人有这种恼人的诀窍想要直接看文本文件,挑选某些列并改变一些东西(用于测试..我不喜欢真的知道..)。但是他们总是抱怨列没有正确排列,他们几乎就像上面列出的那样:
1.343 348.222 484844.333
12349.000002 -2.433333
所以这些精彩的小数排列。有一个简单的方法吗?
答案 0 :(得分:3)
你可以像这样右键:
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
答案 1 :(得分: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 :(得分: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
答案 3 :(得分:1)
在Python 2。*中,
for sublist in temperature_readings:
for item in sublist:
print '%15.6f' % item,
print
发射
1.343000 348.222000 484844.333300
12349.000002 -2.433330
为您的例子。当然,可以根据需要调整长度和小数位数!
答案 4 :(得分:-1)
pprint模块提供了一种“漂亮打印”任意Python数据结构的功能,该形式可以用作解释器的输入。
[...]
此示例演示了pprint()函数及其参数的几种用法。
>>> import pprint
>>> tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead',
... ('parrot', ('fresh fruit',))))))))
>>> stuff = ['a' * 10, tup, ['a' * 30, 'b' * 30], ['c' * 20, 'd' * 20]]
>>> pprint.pprint(stuff)
['aaaaaaaaaa',
('spam',
('eggs',
('lumberjack',
('knights', ('ni', ('dead', ('parrot', ('fresh fruit',)))))))),
['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
['cccccccccccccccccccc', 'dddddddddddddddddddd']]
>>> pprint.pprint(stuff, depth=3)
['aaaaaaaaaa',
('spam', ('eggs', (...))),
['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
['cccccccccccccccccccc', 'dddddddddddddddddddd']]
>>> pprint.pprint(stuff, width=60)
['aaaaaaaaaa',
('spam',
('eggs',
('lumberjack',
('knights',
('ni', ('dead', ('parrot', ('fresh fruit',)))))))),
['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'],
['cccccccccccccccccccc', 'dddddddddddddddddddd']]
否则根据字符长度找出最长的数字,并使用Python的string substitution formatting options来制作相同长度的所有内容。或使用制表符作为分隔符。很多选择!