Python:写入文本文件中的特定位置

时间:2011-12-12 17:04:26

标签: python

我正在编写一个文本文件的坐标,示例数据集如下所示:

-11.700 8.827   9.247
-11.956 8.450   7.858
-12.511 9.655   7.129
-13.527 10.173  7.584

坐标分别排列为x,y,z。

我需要将X坐标写入文本文件,其中数字中的最后一个数字落在字符位置14,Y坐标中的最后一个数字落在字符位置27和Z中的最后一个数字坐标位于第40位。

我能想到的唯一方法是通过获取数字的len并相应地填充空间,但这似乎是一种“丑陋”的方式。有更优雅的解决方案吗?

5 个答案:

答案 0 :(得分:2)

您可以使用格式化运算符%

In [11]: x, y, z = -11.700, 8.827, 9.247

In [12]: '%14.3f %12.3f %12.3f' % (x, y, z)
Out[12]: '       -11.700        8.827        9.247'

答案 1 :(得分:1)

string.rjust()就是你想要的。

line = ''.join([str(x).rjust(14), str(y).rjust(13), str(z).rjust(13)])

答案 2 :(得分:0)

那并不难看。也许你可以通过引入一个辅助函数来获得更多的东西,这个函数接受三个数字并返回格式化的字符串?您仍然需要添加间距等,但至少它与代码的其余部分分开,因此它不是内联的。

答案 3 :(得分:0)

In [1]: fout = open('output.txt', 'w')

In [3]: for line in open('input.txt', 'r'):
   ...:     x, y, z = [float(i) for i in line.split()]
   ...:     fout.write('%14.3f %12.3f %12.3f\n' % (x, y, z))
   ...:     
   ...:     

In [4]: fout.close()

In [5]: cat output.txt
       -11.700        8.827        9.247
       -11.956        8.450        7.858
       -12.511        9.655        7.129
       -13.527       10.173        7.584

答案 4 :(得分:0)

作为其他答案中建议的格式化运算符%的替代方法,我想引入str.format方法:

x, y, z = -11.700, 8.827, 9.247
"{:14.3f} {:12.3f} {:12.3f}".format(x, y, z)