Вам следует хорошенько взглянуть на библиотеку difflib
, в частности, функцию get_close_matches
, которая возвращает слова, которые "достаточно близки", чтобы выполнить то требование слов, которое может не совсем совпадать Обязательно настройте свой порог (cutoff=
) соответственно.
from difflib import get_close_matches
from re import sub
pattern_search = 'education four year'
string1 = 'It is mandatory to have at least of four years of professional education'
string2 = 'need to have education four years with professional degree'
string3 = 'We have four years of military experience'
def match(string, pattern):
pattern = pattern.lower().split()
words = set(sub(r"[^a-z0-9 ]", "", string.lower()).split()) # Sanitize input
return all(get_close_matches(word, words, cutoff=0.8) for word in pattern)
print(match(string1, pattern_search)) # True
print(match(string2, pattern_search)) # True
print(match(string3, pattern_search)) # False
Если вы хотите сделать pattern_search
списком шаблонов, то вам, вероятно, следует выполнить цикл с помощью функции match
.