Python業餘愛好者在這裏。我有一個文本文件列出了數千行的信息,我試圖根據它們是否匹配一個模式來選擇一行和下面的2-3行。 我過濾的文件下來,從原來的只包含感興趣的文件的部分給我,讓我現在的文件看起來像這樣:選擇多行txt文檔並在python中寫入新文本文檔的問題
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部分,然後是後面的兩行。我用下面的代碼:
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
由於我的輸出,那麼會寫(跳過TRIG1後下一行)的stim3(當前行)和stim5,我認爲它移動到下一個「stim:silence.wav」並跳過了stim5,因爲它在寫入之前包含在前一個命令中。 我想在trig5之後使用trig6.RESP:1,但是由於我描述的原因,我的輸出沒有顯示它。 有沒有一種方法可以讓它不跳過那個stim5?
對不起,如果這真的很長。先謝謝你!
小旁註:我建議你總是關閉你打開的文件。最好的方法 - 使用'with'語句。 – cleg