我有一个文件.dat但有更多的数据:
Apr 1 18:15 [n1_Cam_A_120213_O.fits]:
4101.77 1. -3.5612 3.561 -0.278635 4.707 6.448 #data1
0.03223 0. 0.05278 0.05278 0.00237 0.4393 0.4125 #error1
4088.9 1. -0.404974 0.405 -0.06538 5.819 0. #data2
0. 0. 0.01559 0.01559 0.00277 0.1717 0. #error2
4116.4 1. -0.225521 0.2255 -0.041111 5.153 0. #data3
0. 0. 0.01947 0.01947 0.00368 0.4748 0. #error3
4120.8 1. -0.382279 0.3823 -0.062194 5.774 0. #data4
0. 0. 0.01873 0.01873 0.00311 0.3565 0. #error4
Apr 1 18:15 [n1_Cam_B_120213_O.fits]:
4101.767 0.9999 -4.57791 4.578 -0.388646 0.03091 7.499 #data1
0.0293 0. 0.03447 0.03447 0.00243 0.00873 0.07529 #error1
4088.9 1. -0.211493 0.2115 -0.080003 2.483 0.
0. 0. 0.01091 0.01091 0.00327 0.1275 0.
4116.4 1. -0.237161 0.2372 -0.040493 5.502 0.
0. 0. 0.02052 0.02052 0.00231 0.5069 0.
4120.8 1. -0.320798 0.3208 -0.108827 2.769 0.
0. 0. 0.0167 0.0167 0.00404 0.1165 0.
每个数据集的第一行包含name.fits公司,偶数行包含值,奇数行(第一行除外)包含前一行中的值的错误。然后来了一个空行,又开始了。你知道吗
我需要的是以这种方式将信息分为不同的文件:
name1.fits data1[1] err1[1] data1[2] err1[2] data1[3] err1[3]...
name2.fits data1[1] err1[1] data1[2] err1[2] data1[3] err1[3]...
所以下一个文件是
name1.fits data2[1] err2[1] data2[2] err2[2] data2[3] err2[3]...
name2.fits data2[1] err2[1] data2[2] err2[2] data2[3] err2[3]...
然后,我的数据的第一个新文件将如下所示:
n1_Cam_A_120213_O.fits 4101.77 0.03223 1. 0. -3.5612 0.05278 3.561 0.05278 -0.278635 0.00237 4.707 0.4393 6.448 0.4125
n1_Cam_B_120213_O.fits 4101.767 0.0293 0.9999 0. -4.57791 0.03447 4.578 0.03447 -0.388646 0.00243 0.03091 0.00873 7.499 0.07529
到目前为止,我掌握的情况如下:
with open('file.dat','r') as data, open('names.txt', 'a') as nam, open('values.txt', 'a') as val, open('errors.txt', 'a') as err:
for lines in data.readlines():
cols = lines.split()
if "fits" in lines:
header = lines.split()
nam.write(header[3])
elif float(cols[0]) > 1:
#print cols[0]
x=str(cols)
val.write(x)
elif float(cols[0]) < 1:
#print cols[0]
y=str(cols)
err.write(y)
我只是从python开始。我在不同的文件中分别考虑名称值和错误,然后选择所需的行和列。但由于我将处理数百行和文件,我希望采用更自动的方法。我想要的是读取前3行并写入file1,然后读取第1、4、5行并写入file2,然后读取第1、6、7行并写入file3,然后读取第1、8、9行并写入file4,然后跳过空行并读取第11、12、13行并写入file1,然后读取第11、14、15行并写入file2,依此类推(或类似的情况)。你知道吗
我终于成功了,但也许你能给我一些建议让它变得更好。在这里:
试试下面的代码,这是你需要的吗?你知道吗
结果命名方案是0,1,2。。。你知道吗
相关问题 更多 >
编程相关推荐