for line in open(fname, 'r'):
if re.search('#', line):
#print(line)
pass
elif re.search('# segment: retract', line):
print(line)
print('break here')
break
else:
outfile.write(line)
elif语句不起作用,任何人都可以帮助我使用匹配
的正则表达式" #segment:retract"
代码甚至没有输入elif语句。
由于
答案 0 :(得分:3)
if子句的第一个表达式将始终与包含“#”的行匹配。因此,elif子句中更具体的条件将永远不会匹配,因为始终会执行if子句中更通用的条件。因此,您将首先测试更具体的条件,并将更通用的条件移动到elif部分。
for line in open(fname, 'r'):
if re.search('# segment: retract', line):
print(line)
print('break here')
break
elif re.search('#', line):
#print(line)
pass
else:
outfile.write(line)
答案 1 :(得分:2)
我不认为这是正则表达式的概率。这种情况需要像
一样逆转if re.search('# segment: retract', line):
print(line)
print('break here')
break
elif re.search('#', line):
#print(line)
pass
else:
outfile.write(line)
问题是第一个if条件捕获所有以#
开头的行,否则永远不会发生。