如何在python中沿小数点对齐正值和负值
我想将一组正负值写入一个文本文件,如下所示如何在python中沿小数点对齐正值和负值,python,python-2.7,Python,Python 2.7,我想将一组正负值写入一个文本文件,如下所示 1 12.203026 2.291063 -0.061603 1 -0.736147 1.353548 -1.347932 6 0.728048 1.348907 0.247566 6 -0.728048 1.348907 -10.247565 1 10.736147 1.353547 1.347932 1 -
1 12.203026 2.291063 -0.061603
1 -0.736147 1.353548 -1.347932
6 0.728048 1.348907 0.247566
6 -0.728048 1.348907 -10.247565
1 10.736147 1.353547 1.347932
1 -1.203026 12.291063 0.061604
6 11.583889 0.179143 -10.258947
当我写这篇文章时,它应该按照上面的小数点对齐。我使用下面的f.write()命令编写的代码如下所示
f.write('%s %2.6f %2.6f %2.6f\n' % (a, x, y, z ))
发出
1 12.203026 2.291063 -0.061603
1 -0.736147 1.353548 -1.347932
6 0.728048 1.348907 0.247566
6 -0.728048 1.348907 -10.247565
1 10.736147 1.353547 1.347932
1 -1.203026 12.291063 0.061604
6 11.583889 0.179143 -10.258947
假设我有:
>>> li=[['1', 12.203026, 2.291063, -0.061603], ['1', -0.736147, 1.353548, -1.347932], ['6', 0.728048, 1.348907, 0.247566], ['6', -0.728048, 1.348907, -10.247565], ['1', 10.736147, 1.353547, 1.347932], ['1', -1.203026, 12.291063, 0.061604], ['6', 11.583889, 0.179143, -10.258947]]
您可以通过两个步骤右对齐到固定的字段宽度:
for a,x,y,z in li:
x1, y1, z1=['{:2.6f}'.format(e) for e in (x,y,z)]
print '{} {:>13} {:>13} {:>13}'.format(a, x1, y1, z1 )
印刷品:
1 12.203026 2.291063 -0.061603
1 -0.736147 1.353548 -1.347932
6 0.728048 1.348907 0.247566
6 -0.728048 1.348907 -10.247565
1 10.736147 1.353547 1.347932
1 -1.203026 12.291063 0.061604
6 11.583889 0.179143 -10.258947
如果要在一个位置指定宽度和精度,可以执行以下操作:
'{} {:{w}.{p}f} {:{w}.{p}f} {:{w}.{p}f}'.format(a, x, y, z, w=13, p=6 )
格式中的第一个数字是字符总数,而不是小数点前的数字。当该数字太小时,它会通过删除所有填充来进行补偿。要获得所需内容,您需要使用
%10.6f
,而不是%2.6f
。-
是1,初始数字是2,小数点是1,小数点后是6位-1+2+1+6=10。第一列数据实际上是字符串?我想这里已经发布了一个类似的问题。谢谢你的回答。不管怎样,我的所有值都是浮动变量。在我的程序中,我在for循环中包含了f.write()。是否可以在不再次读取的情况下将for循环中的数字对齐?关键部件是其中包含.format
的两行。只需将它们放入for
循环中即可。将print
替换为f。写入并将\n
添加到结尾谢谢你,我会尝试的。我是python新手