以前にも質問して、なんとか自分でやっていましたが、どうしてもうまくいかず、再度質問させていただきます。
file1
11 aaa 1 22 bbb 2 33 ccc 3 44 ddd 4 55 eee 6 66 fff 7 77 ggg 10 8 9``` 10のようなファイルがあり、3列目の数字が連続していないところには差分の空行をいれたいです。 11例えば"fff 7"と"ggg 10"には2行分の空行をいれたいです。 12 13```file2(理想型) 14aaa 1 15bbb 2 16ccc 3 17ddd 4 18(空行) 19eee 6 20fff 7 21(空行) 22(空行) 23ggg 10 24 25``` 26そこでこのようなコードを組んでみました。 27 28```python2 29import sys 30 31path = 'file1' 32f = open(path) 33f2 = open(path) 34list = f.readlines() #file1を1行目から読む 35list2 = f2.readlines()[1:] #file1を2行目から読む 36f.close() 37f2.close() 38 39for (line, line2) in zip(list, list2): 40 slice = line[8:9] #3列目の数字を抜きだし 41 slice2 = line2[8:9] 42 diff = int(slice2) - int(slice) 43 44 num = line[0:1] #行数を抜きだし 45 if diff != 1: #3列目が連続していないときのみ処理 46 start_pos = int(num) 47 empty_lines = int(diff) - 2 48 count = 0 49 while True: 50 line = sys.stdin.readline() 51 if line == '': 52 break 53 count += 1 54 sys.stdout.write(line) 55 if count == start_pos: 56 print '\n' * empty_lines 57 58``` 59この結果、 60 61```ここに言語を入力 62aaa 1 63bbb 2 64ccc 3 65ddd 4 66(空行) 67eee 6 68fff 7 69ggg 10 70``` 71 72空行を入れたい部分の最初の方だけ必要な数の空行をいれることには成功しました。 73 74しかし、2つめ以降には空行をいれることができません。 75 76このコードをどう直せばいいのかご教示いただけないでしょうか。 77全く別のコードを提示していただいても構いません。 78よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/06/11 04:04