我有一个我要打开的文本文件,并根据下一行对某行执行某些操作。 例如,如果我有以下几行:
(a) A dog jump over the fire.
(1) A fire jump over a dog.
(b) A cat jump over the fire.
(c) A horse jump over a dog.
我的代码是这样的:
with open("dog.txt") as f:
lines = filter(None, (line.rstrip() for line in f))
for value in lines:
if value has letter enclosed in parenthesis
do something
then if next line has a number enclosed in parenthesis
do something
编辑:这是我使用的解决方案。
for i in range(len(lines)) :
if re.search('^\([a-z]', lines[i-1]) :
print lines[i-1]
if re.search('\([0-9]', lines[i]) :
print lines[i]
答案 0 :(得分:1)
存储上一行并在阅读完下一行后进行处理:
file = open("file.txt")
previous = ""
for line in file:
# Don't do anything for the first line, as there is no previous line.
if previous != "":
if previous[0] == "(": # Or any other type of check you want to do.
# Process the 'line' variable here.
pass
previous = line
file.close()
答案 1 :(得分:0)
你应该使用python的 iter :
with open('file.txt') as f:
for line in f:
prev_line = line # current line.
next_line = next(f) # when call next(f), the loop will go to next line.
do_something(prev_line, next_line)