Проверьте, существует ли ключевое слово в любой емкости в строке - PullRequest
0 голосов
/ 06 августа 2020
urgency = ["asap", "now", "quickly"]
test = 'the patientneeds help/asap'

if any(elem in test.split() for elem in urgency):
    print('Element Found')

Когда я запускал это, я ожидал, что будет найдено ключевое слово «как можно скорее», но, к сожалению, похоже, что это только точное совпадение.

Ответы [ 3 ]

1 голос
/ 06 августа 2020

Если вы хотите указать c слов и хотите избежать таких триггеров, как, например, snowfall и know, вы можете попробовать следующее:

import re

urgency = ["asap", "now", "quickly"]
test = 'the patientneeds help/asap'

words = set(re.split(r"\W+", test))

if any(elem in words for elem in urgency):
    print('Element Found')

Кажется, нет ничего легкого решение для разделения «потребностей пациента» (слова, объединенные без разделителей символов), но на самом деле это обеспечивает довольно надежный механизм для того, что вам нужно.

1 голос
/ 06 августа 2020

Вы должны использовать регулярное выражение и добавить условие, что вы хотите, чтобы граница слова \b в начале и в конце каждого из ваших искомых слов:

import re


def is_urgent(sentence):
    urgency = ["asap", "now", "quickly"]
    return any(re.search(r'\b' + urgent_word + r'\b', sentence) for urgent_word in urgency)

tests = ['the patient needs help/asap', 'he needs help asap', 'wait until snowfall']

for test in tests:
    if is_urgent(test):
        print('URGENT:', test)
    else:
        print('Not urgent:', test)
        

Вывод:

URGENT: the patient needs help/asap
URGENT: he needs help asap
Not urgent: wait until snowfall
0 голосов
/ 06 августа 2020

Удалите split(). Но in станет True вместо now в know.

urgency = ["asap", "now", "quickly"]
test = 'the patientneeds help/asap'

if any(elem in test for elem in urgency):
    print('Element Found')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...