質問編集履歴

3

修正

2018/10/25 00:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -196,27 +196,87 @@
196
196
 
197
197
  ```ここに言語を入力
198
198
 
199
+ (file1)       (file1_2)
200
+
201
+ PRO B 2 PRO B 2
202
+
203
+ PRO B 2 PRO B 2
204
+
205
+ PRO B 2 PRO B 2
206
+
207
+ PRO B 2 PRO B 2
208
+
209
+ PRO B 2 PRO B 2
210
+
211
+ PRO B 2 GLY B 3
212
+
213
+ GLY B 3 GLY B 3
214
+
215
+ GLY B 3 GLY B 3
216
+
217
+ GLY B 3 GLY B 3
218
+
219
+ GLY B 3 GLY B 10
220
+
221
+ GLY B 10 GLY B 10  
222
+
223
+ GLY B 10 GLY B 10
224
+
225
+ GLY B 10 GLY B 10
226
+
227
+ GLY B 10 TRP B 11
228
+
229
+ TRP B 11 TRP B 11    
230
+
231
+ TRP B 11 TRP B 11
232
+
233
+ TRP B 11 LEU B 6
234
+
235
+ LEU B 6 LEU B 6
236
+
237
+ LEU B 6 LEU B 6
238
+
239
+ LEU B 6 LEU B 6
240
+
241
+ LEU B 6 ILE B 13
242
+
243
+ ILE B 13 ILE B 13
244
+
245
+ ILE B 13
246
+
247
+
248
+
249
+ ```
250
+
251
+ しかし、この方法では
252
+
253
+
254
+
255
+ ```ここに言語を入力
256
+
199
- (file1_2)
257
+ (file2)
200
-
258
+
201
- PRO B 2
259
+ PRO B 2
202
-
260
+
203
- PRO B 2
261
+ PRO B 2
204
-
262
+
205
- PRO B 2
263
+ PRO B 2
206
-
264
+
207
- PRO B 2
265
+ PRO B 2
208
-
266
+
209
- PRO B 2
267
+ PRO B 2
268
+
210
-
269
+ PRO B 2
270
+
211
- GLY B 3
271
+ GLY B 3
212
-
272
+
213
- GLY B 3
273
+ GLY B 3
214
-
274
+
215
- GLY B 3
275
+ GLY B 3
216
-
276
+
217
- GLY B 3
277
+ GLY B 3
218
-
278
+
219
- GLY B 10   
279
+ GLY B 4
220
280
 
221
281
  GLY B 10
222
282
 
@@ -238,66 +298,10 @@
238
298
 
239
299
  LEU B 6
240
300
 
241
- ILE B 13
301
+ ILE B 7
242
302
 
243
303
  ILE B 13
244
304
 
245
- ```
246
-
247
- しかし、この方法では
248
-
249
-
250
-
251
- ```ここに言語を入力
252
-
253
- (file2)
254
-
255
- PRO B 2
256
-
257
- PRO B 2
258
-
259
- PRO B 2
260
-
261
- PRO B 2
262
-
263
- PRO B 2
264
-
265
- PRO B 2
266
-
267
- GLY B 3
268
-
269
- GLY B 3
270
-
271
- GLY B 3
272
-
273
- GLY B 3
274
-
275
- GLY B 4
276
-
277
- GLY B 10
278
-
279
- GLY B 10
280
-
281
- GLY B 10
282
-
283
- TRP B 11    
284
-
285
- TRP B 11
286
-
287
- TRP B 11
288
-
289
- LEU B 6
290
-
291
- LEU B 6
292
-
293
- LEU B 6
294
-
295
- LEU B 6
296
-
297
- ILE B 7
298
-
299
- ILE B 13
300
-
301
305
  ```
302
306
 
303
307
  となってしまいます。

2

コードの追加

2018/10/25 00:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -122,6 +122,186 @@
122
122
 
123
123
 
124
124
 
125
+ ```python
126
+
127
+ path = 'file1'
128
+
129
+
130
+
131
+ with open(path) as f: #file1の2行目からを取り出したfile1_2を作成
132
+
133
+ next(f)
134
+
135
+ for line in f:
136
+
137
+ fileobj = open("file1_2","a")
138
+
139
+ print >> fileobj, line.rstrip()
140
+
141
+
142
+
143
+ path = 'file1'
144
+
145
+ path2 = 'file1_2'
146
+
147
+ f = open(path).readlines()
148
+
149
+ f2 = open(path2).readlines()
150
+
151
+
152
+
153
+ for (line, line2) in zip(f, f2):
154
+
155
+ line_res = line[0:3]
156
+
157
+ line_num = line[7:9]
158
+
159
+ line2_res = line2[0:3]
160
+
161
+ line2_num = line2[7:9]
162
+
163
+ if (line_res == line2_res) and (line_num == line2_num):  
164
+
165
+  #file1とfile1_2の1列目と3列目が同じならば、file1をそのまま出力
166
+
167
+ fileobj = open("file2","a")
168
+
169
+ print >> fileobj, line.rstrip()
170
+
171
+ elif (line_res != line2_res) and ((int(line_num) + 1) == (int(line2_num))):
172
+
173
+ #file1とfile1_2の1列目が違うかつ3列目が1増えているならば、file1をそのまま出力
174
+
175
+ fileobj = open("file2","a")
176
+
177
+ print >> fileobj, line.rstrip()
178
+
179
+ elif (line_res != line2_res) and ((int(line_num) + 1) != (int(line2_num))):  
180
+
181
+  #file1とfile1_2の1列目が違うかつ3列目が2以上増えているとき、3列目をfile1の3列目の数字+1にして出力
182
+
183
+ line_num_1 = ((int(line_num)) + 1)
184
+
185
+ line_num_2 = (str(line_num_1)).rjust(1)
186
+
187
+ tmp = line[:30] + line_num_2 + line[33:]
188
+
189
+ fileobj = open("file2","a")
190
+
191
+ print >> fileobj, tmp.rstrip()
192
+
193
+
194
+
195
+ ```
196
+
197
+ ```ここに言語を入力
198
+
199
+ (file1_2)
200
+
201
+ PRO B 2
202
+
203
+ PRO B 2
204
+
205
+ PRO B 2
206
+
207
+ PRO B 2
208
+
209
+ PRO B 2
210
+
211
+ GLY B 3
212
+
213
+ GLY B 3
214
+
215
+ GLY B 3
216
+
217
+ GLY B 3
218
+
219
+ GLY B 10   
220
+
221
+ GLY B 10
222
+
223
+ GLY B 10
224
+
225
+ GLY B 10
226
+
227
+ TRP B 11    
228
+
229
+ TRP B 11
230
+
231
+ TRP B 11
232
+
233
+ LEU B 6
234
+
235
+ LEU B 6
236
+
237
+ LEU B 6
238
+
239
+ LEU B 6
240
+
241
+ ILE B 13
242
+
243
+ ILE B 13
244
+
245
+ ```
246
+
247
+ しかし、この方法では
248
+
249
+
250
+
251
+ ```ここに言語を入力
252
+
253
+ (file2)
254
+
255
+ PRO B 2
256
+
257
+ PRO B 2
258
+
259
+ PRO B 2
260
+
261
+ PRO B 2
262
+
263
+ PRO B 2
264
+
265
+ PRO B 2
266
+
267
+ GLY B 3
268
+
269
+ GLY B 3
270
+
271
+ GLY B 3
272
+
273
+ GLY B 3
274
+
275
+ GLY B 4
276
+
277
+ GLY B 10
278
+
279
+ GLY B 10
280
+
281
+ GLY B 10
282
+
283
+ TRP B 11    
284
+
285
+ TRP B 11
286
+
287
+ TRP B 11
288
+
289
+ LEU B 6
290
+
291
+ LEU B 6
292
+
293
+ LEU B 6
294
+
295
+ LEU B 6
296
+
297
+ ILE B 7
298
+
299
+ ILE B 13
300
+
301
+ ```
302
+
303
+ となってしまいます。
304
+
305
+ 前の行の変更を反映して次の行に移るようにするにはどうすればよいのでしょうか。
306
+
125
- 何かいいやり方はないでしょうか。
307
+ それとも他にやりようがあるのでしょうか。
126
-
127
- よろしくお願いします。

1

加筆

2018/10/25 00:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
  具体的には
112
112
 
113
- ・3列めの数字が2以上増えているとき、(その前の行の3列めの数+1)に変更する。
113
+ ・3列めの数字が前の行より2以上増えているとき、(その前の行の3列めの数+1)に変更する。
114
114
 
115
115
  ・1列めの文字列が同じ行では3列めの数字を同じにする。
116
116