@bittenmuskrat

Как решить проблему с условием вывода и регулярными выражениями в Python?

import re

m_list = ["желтый\?", "красный\?", "синий\?"]
data = input().lower()
a = re.search("черный\?", data)
print("Есть вхождение" if a else "Нет вхождения")

1) Пытаюсь сделать так, чтобы print не выводил блок else и выводил только значение при соответствии шаблона регулярного выражения. Попытки убрать блок else, либо заменить "Нет вхождения" на pass или None - выдают ошибку.

2) Как передать массив m_list в условия re.search, чтобы проверка текста регулярным выражением выполнялась по всем элементам, указанным в m_list?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
1)
Попытки убрать блок else, либо заменить "Нет вхождения" на pass или None - выдают ошибку.

a if q else b - это тернарный оператор. У него три аргумента (a, b, q) и результатом будет a или b в зависимости от истинности q.
pass там по синтаксису не подойдёт, поскольку это не значение, а ключевое слово.
Вам нужно вычислить выражение и результатом должно быть что-то что можно передать в print(). Если по else вы укажете пустую строку "", то print её напечатает. Не знаю устроит ли вас пустой абзац в консоли. Если нет, то смотрите решение, предложенное выше.

2) в предыдущем решении вы могли не заметить, но регекспы соединены через "|". Это сработает не для всех регекспов. Нужно быть осторожнее с такой конкатенацией. Вообще с регекспами надо поосторожнее. В большой силе большая ответственность.
Можно сделать цикл и поискать каждый регексп по отдельности. Так вам проще сохранить контроль над тем, что именно вы нашли и как на это реагировать.
Ответ написан
@dodo512
import re

m_list = ["желтый\?", "красный\?", "синий\?"]
data = input().lower()
a = re.search("|".join(m_list), data)
if a:
    print("Есть вхождение")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы