0
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 语句不起作用,任何人都可以帮助我使用匹配的正则表达式

“#段:收回”

该代码甚至没有输入 elif 语句。

谢谢

4

2 回答 2

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)
于 2013-01-12T14:56:07.193 回答
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 条件捕获所有以开头的行#,否则永远不会发生。

于 2013-01-12T14:57:30.133 回答