@sobolevmaksim
Всё будет но не сразу!

Как сделать проверку запрещённых и разрешённых слов?

Здравствуйте!
Если не трудно можете помочь.
Задача следующая есть большой текс от 30 до 500 символов.(Это не html)
И таких текстов очень много(Текст в переменной)
Как лучше сделать и пройтись по всем словам ( В словах могут находится ссылки ).
Есть список с разрешёнными ссылками, как сделать полную проверку что бы при нахождении первого найденого разрешения я получаю true, но проверка заканчивается.
А если есть другие ссылки в тексте которые запрещены или нет в списке я хочу получать False
использовал следующий код, но мне нужно проверить около 20 ссылок
И таких функций приходится создавать очень много и для каждой ссылки, но мне кажется это глупо.
Если кто может натолкнуть в правильном направлении.
Вот функцией которой я пользовался


def GLBmYlink(isData):
if re.findall(r'https://github.com/.\w+', isData):
return True
else:
return False
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
@o5a
Я так и не понял, нужны ли именно регулярные выражения. Если в списках просто ссылки, а не шаблоны ссылок, то можно и простым link in text вместо регулярных выражений :
# blacklist, whitelist соответственно список запрещенных и разрешенных
def check(text):
    if any(link in text for link in blacklist):
        return False
    elif any(link in text for link in whitelist):
        return True
    return False

Если же нужны именно регулярные выражения, можно их объединить для вида 'link1|link2|link3', может быть быстрее при большом количестве ссылок, например так:
def check(text):
    if re.search('|'.join(map(re.escape, blacklist)), text):
        return False
    elif re.search('|'.join(map(re.escape, whitelist)), text):
        return True
    return False
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Любая задача легко разбивается на подзадачи

1. Найти все ссылки
links = re.findall(r'https://github\.com/\w+/\w+', isData)


2. Проверить, все ли найденные ссылки находятся в списке разрешенных
all(link in allowed_links for link in links)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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