У меня есть следующий код, чтобы найти ключевые слова в профиле пользователя:
profile_text = self.text.lower()
term_string = ''
TERMS = ['spring', 'java', 'angular', 'elastic', 'css']
for term in TERMS:
if term in profile_text: term_string += term.strip() + ', '
return term_string.strip(' ,')
Это вернет что-то вроде:
"spring, angular, css"
Однако он также вернет "java", если у пользователя есть слово, такое как "javascript". Что было бы хорошим примером для предотвращения этого?
Вы должны использовать регулярные выражения.
Вы могли бы сделать что-то вроде:
import re
TERMS = ['spring', 'java', 'angular', 'elastic', 'css']
matched_terms = []
for term in TERMS:
if re.search(r'\b{}\b'.format(term), profile_text, re.M):
matched_terms.append(term)
return ', '.join(matched_terms)
(?i)
в начало регулярного выражения, иначе оно не будет соответствовать "Spring" или "Java"
re.I
.... аргумент flags тогда станет re.M | re.I
profile_text
TERMS = ['spring ', 'java ', 'angular ', 'elastic ', 'css ']