我正在尝试制作一个代码:
如果是=打印“ok”:
str1 = "Start"
with open("C:...test.txt") as file:
for line in file:
if str1 in line:
if "contain" in line:
print "OK"
else:
print "NOK"
我需要整合“第3行”条件
答案 0 :(得分:0)
可能是小开销,但是如果你的文件不是太大,我只是将每一行转储到列表L中,然后遍历该列表 - 如果行r以str1开头,你可以只做L [r +3]并检查它是否包含“包含”。
答案 1 :(得分:0)
使用两个列表来存储符合您规则的位置。
然后检查匹配相对偏移的位置。
start_lines = []
contains_lines = []
with open("C:...test.txt") as inp:
line_num = 0
for line in inp:
if line.startswith("start"):
start_lines.append(line_num)
if "contains" in line:
contains_lines.append(line_num)
line_num += 1
print [line_num for line_num in contains_lines if line_num - 3 in start_line]
答案 2 :(得分:0)
为了更好地使用内存,您可以使用枚举进行行号跟踪:
str1 = "Start"
fp = open("C:...test.txt")
check = 0
for i,line in enumerate(fp):
if str1 in line:
check = i
continue
if "contain" in line and (i == check + 3):
print "OK"
else:
print "NOK"
这里我= =检查+ 3条件将检查你的第3行条件。
答案 3 :(得分:0)
@Mehdi ouahabi你示意“转到以 开始 ”开头的行,所以我们只查看那些以“开始”开头的行,而不是那些在中间或末尾包含 开始 :
with open("test.txt") as file:
for line in file:
if line.startswith("Start"): #instead of "str1 in line"
if "contain" in line: print "OK"
else: print "NOK"
***编辑:***在这种情况下,您将检查行是否开始/包含今天的日期
from datetime import date
with open("test.txt") as file:
for line in file:
#if str(date.today()) in line:#check if today's date exist in the line
if line.startswith(str(date.today())): #check if the line start with today's dates
if "contain" in line: print "OK"
else: print "NOK"