Pythonアマチュアです。何千行もの情報をリストしたテキスト ファイルがあり、パターンに一致するかどうかに基づいて、行と次の 2 ~ 3 行を選択しようとしています。元のファイルからファイルをフィルタリングして、ファイルの関心のある部分だけを含めるようにしたので、現在のファイルは次のようになります。
trig1.RESP:
stim4: silence.wav
trig1.RESP:
trig6.RESP: 1
trig1.RESP:
trig1.RESP:
trig5.RESP: 1
stim5: silence.wav
trig1.RESP:
trig6.RESP: 1
stim3: silence.wav
trig1.RESP:
stim5: silence.wav
trig1.RESP:
trig6.RESP: 1
などなど... 基本的に私がやろうとしているのは、行の Silence.wav 部分を含むすべての行を書き、その後に続く 2 行を書くことです。次のコードを使用しました。
parsed_output = open("name-of-file-to-be-written", "w")
filtered_input = open("name-of-file-that-has-above-data", "r")
for line in filtered_input:
if "silence.wav" in line and "trig1" in filtered_input.next():
parsed_output.write(line)
parsed_output.write(filtered_input.next())
parsed_output.close()
これは、silence.wav 行と応答のある行を出力するため、ほとんどの場合うまく機能します (私が最も興味を持っている部分、この時点での応答の前の trig1 はあまり重要ではありません)。しかし、私が遭遇する問題は、行が行くときです:
stim3: silence.wav
trig1.RESP:
stim5: silence.wav
私の出力は stim3 (現在の行) と stim5 (trig1 をスキップした後の次の行) を書き込むので、次の "stim:silence.wav" に移動し、前のコマンドに含まれていた stim5 をスキップすると思います。それが書かれたとき。stim5 の後に trig6.RESP: 1 が必要ですが、説明した理由で出力に表示されません。そのstim5をスキップしないようにする方法はありますか?
これが本当に長い場合は申し訳ありません。前もって感謝します!