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部分的每一行,然后是接下来的两行。我使用了以下代码:
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?
对不起,如果这真的很长。先感谢您!