Lets say I have a .txt file which reads
this is line x
this is line y
this is line x
this is line x
this is line x
this is line y
this is line x
this is line x
this is line y
I want to print 'this is line x' only if 'this is line y' comes after it (so in this example it should only print 3 times).
I've tried:
skip_line = True
with open("input_n.txt","r") as myfile:
for line in myfile:
if "x" in line:
skip_line = False
elif "y" in line:
skip_line = True
else:
pass
if skip_line:
continue
print(line)
However this prints every 'this is line x' anyway I can see in my code that it does this because I do skip_line = false for x in the string, so how can I make it print the three times I actually want it to?
You need to track the previous line with your bool. Save it with another var.
skip_line = True
prev_line = ""
with open("f.txt","r") as myfile:
skip_line = True
for line in myfile:
if "x" in line:
next_skip_line = False
elif "y" in line:
next_skip_line = True
# skip_line is False if the last line was x
# next_skip_line is True if this line was y
if not skip_line and next_skip_line:
print(prev_line)
prev_line = line
skip_line = next_skip_line