sequence.log
1(sequence.log) 2 A PRO 2 3 A GLY 3 4 A SER 4
ATOM2.log
1(ATOM2.log) 2PRO A 2 3PRO A 2 4PRO A 2 5PRO A 2 6PRO A 2 7GLY B 3 8GLY B 3 9GLY A 3 10GLY A 3 11GLY A 3
sequence.logを1行ずつ読んで、ATOM2.logの一致している行を出力するということをしています。
そこで以下のようなスクリプトを作りました。
python
1path = 'sequence.log' 2path2 = 'ATOM2.log' 3 4f = open(path) 5f2 = open(path2) 6 7for line in f: 8 line_chain = line[1:2] #"A"を抜きだし 9 line_num = line[12:13] #"2","3","4"を抜きだし 10 line_res = line[5:8] #"PRO","GLY","SER"を抜きだし 11 if line_chain == "A": 12 for line2 in f2: 13 line_chain2 = line2[4:5] #"A"を抜きだし 14 line_num2 = line2[8:9] #"2","3"を抜きだし 15 line_res2 = line2[0:3] #"PRO","GLY"を抜きだし 16 if (line_res == line_res2) and (line_chain == line_chain2) and (line_num == line_num2): 17 fileobj = open ("a.log", "a") 18 print >> fileobj, line2.rstrip() 19
得たい結果 (a.log) PRO A 2 PRO A 2 PRO A 2 PRO A 2 PRO A 2 GLY A 3 GLY A 3 GLY A 3
実際に動かしてみると
PRO A 2 PRO A 2 PRO A 2 PRO A 2 PRO A 2
しか出力されません。
for文の中にfor文をいれているため、for line in f:で1行だけ回して止まっているのではないかと考えています。
これを2行目以降も続けるにはどう書き変えればいいのでしょうか。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/10/23 08:38
2018/10/23 08:45
退会済みユーザー
2018/10/23 08:48