Я хочу 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: fra == None
@id345678 elif fra is None:
отлично, спасибо ребята :)
В elif
у вас есть if
, для этого требуется условие, а вы его не предоставляете, оно должно быть
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
Если код выполняется несколько раз, лучше скомпилировать регулярное выражение один раз.
Определите глобально скомпилированное регулярное выражение в файле
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