@rsytrade

Как обработать исключение в генераторе функции filter?

Как можно обработать исключение в такой конструкции:

finder = next(filter(lambda x: x.lower() in text.lower(),  list_words))


Необходимо остановить поиск/фильтрацию в text.lower() как только найдено первое совпадение из списка list_words), проблема в том, что если ничего не найдено соответственно будет StopIteration
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
У next есть второй параметр - значение по умолчанию, которое вернётся при невозможности получить значение из итератора/генератора. Можно указать в нём None и проверять, что вернулось не None.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
А чем не устроило:
text_lower = text.lower() # зачем сто раз преобразовывать?
for x in list_words:
    if x.lower() in text:
        finder = x
else:  # else относится к for, а не к if
    finder = None
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы