(file1) ATOM 1 N GLY A ATOM 2 CA GLY A ATOM 49 N GLY A ATOM 50 CA GLY A
というファイルがあり、これの2列目を連番にしたいです。
(1 2 49 50 を 1 2 3 4 とする。)
そこで、連番のファイルを作成し、2列目の値と比較して、違っていれば連番の値を代入するというやり方を考えました。
(renban) 1 2 3 4
python
1path = 'file1' 2path2 = 'renban' 3 4f = open(path) 5list = f.readlines() 6f2 = open(path2) 7list2 = f2.readlines() 8 9for (line, line2) in zip(list, list2): 10 line_1 = line[6:8] # 1 2 49 50を抜きだし 11 line2_1 = line2[0:1] # 1 2 3 4を抜きだし 12 a = int(line_1) 13 b = int(line2_1) 14 if a != b: 15 line_1 = line2_1 16 fileobj = open("a.log","a") 17 print >> fileobj, line.rstrip() 18 # ATOM 49 N GLY A -> ATOM 3 N GLY A 19 # ATOM 50 CA GLY A -> ATOM 4 CA GLY A と出力されてほしいが、うまくいっていない。 20 elif a == b: 21 fileobj = open("a.log","a") 22 print >> fileobj, line.rstrip() 23 # ATOM 1 N GLY A 24 # ATOM 2 CA GLY A が出力される。 25 26f.close() 27f2.close()
このようなスクリプトを書いてみたのですが、
python
1if a != b: 2 line_1 = line2_1 3 fileobj = open("a.log","a") 4 print >> fileobj, line.rstrip()
の部分が期待通りになりません。
果たしてこのようなやり方で合っているのか。もっと他にシンプルな書き方があるのか疑問に思っています。
お分かりの方ご教示お願いします。
(現在の結果) ATOM 1 N GLY A ATOM 2 CA GLY A ATOM 49 N GLY A ATOM 50 CA GLY A (得たい結果) ATOM 1 N GLY A ATOM 2 CA GLY A ATOM 3 N GLY A ATOM 4 CA GLY A
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。