簡體   English   中英

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

[英]Python: Writing to a specific position in a text file

我正在將坐標寫入文本文件,示例數據集如下所示:

-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並相應地填充空格,但這似乎是“丑陋”的方法。 有沒有更優雅的解決方案?

您可以為此使用格式運算符%

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'

string.rjust()是您想要的。

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

這並不難看。 也許您可以通過引入一個輔助函數來使它更符合您的喜好,該函數接受三個數字並返回格式化的字符串? 您仍然需要添加空格等,但是至少它與其余代碼分開,因此沒有內聯完成。

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM