elif: SyntaxError: invalid syntax

elif: SyntaxError: invalid syntax

我想 re.search 在 if 语句中,但无论标识如何,都会出现语法错误。是因为elif:没有条件吗?

    fr = re.compile(r'(long_regex)', flags = re.DOTALL | re.MULTILINE)
    fra = fr.search(text)
    if fra:
        result = fra.group(5)
    elif:
        f3 = re.compile(r'(some_regex_1)', flags = re.DOTALL | re.MULTILINE)
        fr3 = f3.search(text)
        result = fr3.group(5)
    elif:
        f4 = re.compile(r'(some_regex)', flags = re.DOTALL | re.MULTILINE)
        fr4 = f4.search(text)
        result = fr4.group(4)
    else:
        result = None

错误信息

  Input In [102]
    elif:
        ^
SyntaxError: invalid syntax

对于 elif 语句,您必须提供条件。例如:

if a == 1:
  do_a()
elif a == 2:
  do_b()
else:
  do_c()

elif你有if,它需要一个条件,你提供none,应该是

if condition1:
    pass
elif condition2:
    pass

使用海象运算符(自 py3.8 起)你可以改进你的代码看起来像

if fra := re.search(r'(long_regex)', text, flags=re.DOTALL | re.MULTILINE):
    result = fra.group(5)
elif fr3 := re.search(r'(some_regex_1)', text, flags=re.DOTALL | re.MULTILINE):
    result = fr3.group(5)
elif fr4 := re.search(r'(some_regex)', text, flags=re.DOTALL | re.MULTILINE):
    result = fr4.group(4)
else:
    result = None

如果多次执行代码,最好只编译一次regex

在文件中全局定义编译后的正则表达式

F2 = re.compile(r'(long_regex)', flags=re.DOTALL | re.MULTILINE)
F3 = re.compile(r'(some_regex_1)', flags=re.DOTALL | re.MULTILINE)
F4 = re.compile(r'(some_regex)', flags=re.DOTALL | re.MULTILINE)

然后在你的方法中使用它

if fra := F2.search(text):
    result = fra.group(5)
elif fr3 := F3.search(text):
    result = fr3.group(5)
elif fr4 := F4.search(text):
    result = fr4.group(4)
else:
    result = None