問題の解決策が見つからないため、1 つ質問があります。
gen はジェネレーターです (difflib.Differ.compare() の結果):
通常、gen を反復処理することで、各行を読み取ることができます。問題は、反復ごとに現在の行と次の 2 行を読み取る必要があることです。
例 (行ごとに繰り返すことによる通常の出力):
iteration 1:
line = 'a'
iteration 2:
line = 'b'
iteration 3:
line = 'c'
iteration 4:
line = 'd'
iteration 5:
line = 'e'
iteration 6:
line = 'f'
iteration 7:
line = 'g'
しかし、私の場合、これを取得する必要があります:
iteration 1:
line = 'a'
next1 = 'b'
next2 = 'c'
iteration 2:
line = 'b'
next1 = 'c'
next2 = 'd'
iteration 3:
line = 'c'
next1 = 'd'
next2 = 'e'
iteration 4:
line = 'd'
next1 = 'e'
next2 = 'f'
iteration 5:
line = 'e'
next1 = 'f'
next2 = 'g'
iteration 6:
line = 'f'
next1 = 'g'
next2 = None
iteration 7:
line = 'g'
next1 = None
next2 = None
gen.send()、itertools.islice() で遊んでみましたが、適切な解決策が見つかりません。このジェネレーターをリストに変換したくありません (次に、next1 を gen[i + 1] として、next2 を gen[i + 2] として読み取ることができますが、diff 出力が大きい場合、これはまったく非効率的です。