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 句の最初の式は、常に「#」を含む行に一致します。if 句のより一般的な条件は常に実行されるため、elif 句のより具体的な条件は決して一致しません。したがって、より具体的な条件を最初にテストし、より一般的な条件を 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)

#問題は、 and elseで始まるすべての行をキャッチする最初の if 条件です。

于 2013-01-12T14:57:30.133 に答える