我正在处理一个长文件,其列如下:
0.028488 35.3465833928 0.223905932998 0.128418942246 23 51 50.23 -27 57 47.4
我必须复制前3列,处理最后3列并将结果写入文件。这是代码的一部分:
with open(file) as fin:
for line in fin:
a = float(line.split()[1])
b = float(line.split()[2])
c = float(line.split()[3])
deg = float(line.split()[7])
min = float(line.split()[8])
sec = float(line.split()[9])
#I have to calculate radiants from deg, min, sec (and I have some phase issues: that is why I write pi/2 - ...)
if (deg != 0.):
rad = math.pi/2. - deg/math.fabs(deg) *(deg + min/60. + sec/3600.) * math.pi/180.
else:
if (min !=0):
rad = math.pi/2. - min/math.fabs(min) * (min/60. + sec/3600.) * math.pi /180.
else:
rad = math.pi/2. - sec/math.fabs(sec) * (sec/3600.) *math.pi/180.
vec = [[a, b, c, rad]]
np.savetxt(fout,vec)
这就是python在文件上写的内容:
2.848799999999999900e-02 3.534658339280000000e+01 2.239059329979999900e-01 7.016950813538869200e-01
正如你所看到的,因为a,b,c是浮点数,python在重写它们时遇到了一些困难,我认为这会导致我的代码出现一些问题(也许可能会出现问题)。
如果可以,我该如何避免呢?
编辑:纠正了一个(可怕的)错字......
我使用python 2.6
答案 0 :(得分:0)
您可以使用numpy.savetxt
参数将格式字符串传递给fmt
,以指定格式化输出的方式。
np.savetxt(fout, vec, fmt="%.2f")
这应该会产生这样的结果:
35.35 0.22 0.13 1.12
这不会进行舍入,但会截断打印出的小数位数。您可以通过更改格式字符串来更改要显示的小数位数。