Python素人がここにあります。私は何千もの行に関する情報をリストアップしたテキストファイルを持っており、パターンと一致するかどうかに基づいて行とそれに続く2行を選択しようとしています。 は、私はちょうど私に興味のあるファイルの一部を含むように、元のファイルから絞り込まてきたので、私の現在のファイルには、次のようになります。基本的には何をなどtxtドキュメントの複数の行を選択し、Pythonで新しいテキストdocに書き込む問題。
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行を含むすべての行を書き出すことです。それはsilence.wavラインと応答(私が最も興味がある部分、応答前TRIG1を持っている行を出力するので
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()
これは、ほとんどの部分は正常に動作します:私は、次のコードを使用しましたこの時点ではあまり重要ではない)。しかしラインが行くとき、私はに実行し、問題がある:
stim3: silence.wav
trig1.RESP:
stim5: silence.wav
私の出力がSTIM3(現在の行)とstim5(TRIG1をスキップした後に次の行を)書きますので、私はそれが次に移り考えます"stim:silence.wav"と書かれたときに前のコマンドに含まれていたので、stim5をスキップします。 私はtrig6.RESPが必要です:stim5の後に1が、私の出力は、私が記述した理由でそれを示していません。 そのstim5をスキップしないようにする方法はありますか?
本当に長い場合は申し訳ありません。前もって感謝します!
小さい謝辞:あなたが開いたファイルを常に閉じることをお勧めします。それを行う最良の方法です。 'with'ステートメントを使用します。 – cleg