Elif: SyntaxError: неверный синтаксис

Я хочу 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
Элиф что? docs.python.org/3/tutorial/controlflow.html.
CristiFati 23.04.2022 11:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для оператора elif вы должны указать условие. Например:

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

Спасибо, я угадал. Как здесь может выглядеть условие? elif: fra == None

id345678 23.04.2022 11:12

@id345678 elif fra is None:

azro 23.04.2022 11:13

отлично, спасибо ребята :)

id345678 23.04.2022 11:14
Ответ принят как подходящий

В 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

Другие вопросы по теме