2017-07-31 28 views
1

我想從一個文件中讀出,「ee_pinkH1.xpk」 這是我的ee_pinkH1.xpk文件看起來像:如何以特定順序寫出文件?

label dataset sw sf 
1H 1H_2 
NOESY_F1eF2e.nv 
4807.69238281 4803.07373047 
600.402832031 600.402832031 
1H.L 1H.P 1H.W 1H.B 1H.E 1H.J 1H.U 1H_2.L 1H_2.P 1H_2.W 1H_2.B 1H_2.E 1H_2.J 1H_2.U vol int stat comment flag0 flag8 flag9 
0 {} 7.78881 0.02842 0.04763 ++ {0.0} {} {} 5.89277 0.07262 0.11966 ++ {0.0} {} 0.0 7.3981 0 {} 0 0 0 
1 {} 7.61431 0.04366 0.07181 ++ {0.0} {} {} 5.87817 0.06830 0.11334 ++ {0.0} {} 0.0 5.5413 0 {} 0 0 0 
2 {} 8.05367 0.02879 0.03707 ++ {0.0} {} {} 5.73575 0.07116 0.10207 ++ {0.0} {} 0.0 4.4803 0 {} 0 0 0 
3 {} 7.16881 0.03259 0.04929 ++ {0.0} {} {} 5.73917 0.06553 0.10821 ++ {0.0} {} 0.0 5.4038 0 {} 0 0 0 
4 {} 7.94518 0.02852 0.04924 ++ {0.0} {} {} 5.63447 0.12494 0.10869 ++ {0.0} {} 0.0 2.4702 0 {} 0 0 0 
5 {} 7.65731 0.05419 0.07742 ++ {0.0} {} {} 5.65039 0.08312 0.12708 ++ {0.0} {} 0.0 4.3950 0 {} 0 0 0 
6 {} 7.60002 0.04926 0.07038 ++ {0.0} {} {} 5.63917 0.13377 0.24062 ++ {0.0} {} 0.0 6.3350 0 {} 0 0 0 
7 {} 7.53822 0.03728 0.08602 ++ {0.0} {} {} 5.64647 0.12031 0.17187 ++ {0.0} {} 0.0 11.4796 0 {} 0 0 0 
8 {} 7.49302 0.03011 0.04301 ++ {0.0} {} {} 5.64581 0.10163 0.14260 ++ {0.0} {} 0.0 4.2979 0 {} 0 0 0 
9 {} 7.38454 0.02958 0.04024 ++ {0.0} {} {} 5.64981 0.06854 0.10766 ++ {0.0} {} 0.0 4.7322 0 {} 0 0 0 
10 {} 8.04667 0.03795 0.05967 ++ {0.0} {} {} 5.60118 0.07613 0.11373 ++ {0.0} {} 0.0 5.2641 0 {} 0 0 0 
11 {} 7.89060 0.04859 0.05923 ++ {0.0} {} {} 5.60680 0.09108 0.10902 ++ {0.0} {} 0.0 3.9888 0 {} 0 0 0 
12 {} 7.38360 0.03251 0.04058 ++ {0.0} {} {} 5.49793 0.05913 0.07784 ++ {0.0} {} 0.0 3.7279 0 {} 0 0 0 
13 {} 7.66280 0.02544 0.06748 ++ {0.0} {} {} 5.48500 0.08846 0.11309 ++ {0.0} {} 0.0 3.9823 0 {} 0 0 0 
14 {} 7.60046 0.06299 0.09462 ++ {0.0} {} {} 5.48296 0.09213 0.13565 ++ {0.0} {} 0.0 5.1588 0 {} 0 0 0 
15 {} 7.30477 0.03561 0.03189 ++ {0.0} {} {} 5.45582 0.07882 0.06792 ++ {0.0} {} 0.0 2.5031 0 {} 0 0 0 
16 {} 7.69287 0.04291 0.05129 ++ {0.0} {} {} 5.41687 0.09768 0.11328 ++ {0.0} {} 0.0 3.6440 0 {} 0 0 0 
17 {} 7.53968 0.05164 0.09332 ++ {0.0} {} {} 5.38349 0.11427 0.19768 ++ {0.0} {} 0.0 7.4048 0 {} 0 0 0 
18 {} 8.06684 0.02564 0.02865 ++ {0.0} {} {} 5.16953 0.10655 0.11644 ++ {0.0} {} 0.0 3.2906 0 {} 0 0 0 
19 {} 7.44620 0.03758 0.00001 ++ {0.0} {} {} 5.18077 0.17121 0.00003 ++ {0.0} {} 0.0 1.4552 0 {} 0 0 0 

我想從每行取出特定的值,並將其寫入出另一個名爲「tclust.txt」的文件。目前,這是我的文件的輸出是什麼樣子:

rbclust 
Peak 2 7.61431 0.05 5.87817 0.05 
Peak 3 8.05367 0.05 5.73575 0.05 
Peak 4 7.16881 0.05 5.73917 0.05 
Peak 5 7.94518 0.05 5.63447 0.05 
Peak 6 7.65731 0.05 5.65039 0.05 
Peak 7 7.60002 0.05 5.63917 0.05 
Peak 8 7.53822 0.05 5.64647 0.05 
Peak 9 7.49302 0.05 5.64581 0.05 
Peak 10 7.38454 0.05 5.64981 0.05 
Peak 11 8.04667 0.05 5.60118 0.05 
Peak 12 7.89060 0.05 5.60680 0.05 
Peak 13 7.38360 0.05 5.49793 0.05 
Peak 14 7.66280 0.05 5.48500 0.05 
Peak 15 7.60046 0.05 5.48296 0.05 
Peak 16 7.30477 0.05 5.45582 0.05 
Peak 17 7.69287 0.05 5.41687 0.05 
Peak 18 7.53968 0.05 5.38349 0.05 
Peak 19 8.06684 0.05 5.16953 0.05 
Peak 20 7.44620 0.05 5.18077 0.05 
Peak 1 7.78881 0.05 5.89277 0.05 

這是我的代碼:

import os 
import sys 
import re 

i = 0; 
contents_peak = [] 
peak_lines=[] 
with open ("ee_pinkH1.xpk","r") as peakPPM: 
    for PPM in peakPPM.readlines(): 
     float_num = re.findall("[\s][1-9]{1}\.[0-9]+",PPM) 
     if (len(float_num)>1): 
      i=i+1 
      value = ('Peak ' + str(i) + ' '+ str(float_num[0])+ ' 0.05'+ '\n') 
      peak_lines.insert(-1,value) 
tclust_peak = open("tclust.txt","w+") 
tclust_peak.write('rbclust \n') 
for value in peak_lines: 
    tclust_peak.write(value) 
tclust_peak.close() 

j = 0; 
contents_atom = [] 
atom_lines=[] 
with open ("peaks_ee.xpk","r") as atomName: 
    for name in atomName.readlines(): 
     float_str = re.findall("\d\.H\d'?", name) 
     if (len(float_str)>1): 
      j = j+1 
      value1 = ('Atom ' + str(j) + ' ' + str(float_str[0]) + ' ' + str(float_str[1]) + '\n') 
      atom_lines.insert(-1,value1) 

tclust_atom = open("tclust.txt","a") 
for value1 in atom_lines: 
    tclust_atom.write(value1) 
tclust_atom.close() 

眼下,第一行以峯2開始,以峯1,如何結束可以從Peak 1開始?

回答

6

...在最後添加條目而不是在最後一個條目之前插入條目。

peak_lines.append(value) 
1

是......或者你只是把它寫在循環中。看看這個: How can I open multiple files using "with open" in Python?

with open('a', 'w') as a, open('b', 'w') as b: 
    do_something() 

所以:

with open ("ee_pinkH1.xpk","r") as peakPPM, open("tclust.txt","w+") as tclust_peak: 

#Loop... 
    #Code here.... 
    tclust_peak.write('rbclust \n') 
    value = "Peak {} {} 0.05".format(str(i), str(float_num[0]) 
    tclust_peak.write(value) 
相關問題