Как проверить правильное слово в строке в python
В основном мне нужно найти способ найти способ найти ТОЧНОЕ слово в строке. Вся информация, которую я читал в Интернете, только дала мне, как искать буквы в строке, поэтому
98787Это правильно
все равно вернется как истина в выражении if.
Это то, что у меня есть до сих пор.
elif 'This is correct' in text:
print("correct")
Это будет работать с любой комбинацией букв перед правилом... Например, fkrjCorrect, 4123Correct и lolcorrect будут возвращены как истинные в инструкции if. Когда я хочу, чтобы он вернулся как истинный, только если он точно соответствует "Это правильно",
Ответы
Ответ 1
Вы можете использовать слова-границы регулярных выражений. Пример:
import re
s = '98787This is correct'
for words in ['This is correct', 'This', 'is', 'correct']:
if re.search(r'\b' + words + r'\b', s):
print('{0} found'.format(words))
Это дает:
is found
correct found
EDIT: для точного соответствия замените \b
утверждения на ^
и $
чтобы ограничить совпадение с началом и концом строки.
Ответ 2
Используйте оператор сравнения ==
вместо in
то:
if text == 'This is correct':
print("Correct")
Это проверит, будет ли целая строка просто 'This is correct'
. Если это не так, это будет False
Ответ 3
Я подозреваю, что вы ищете startswith()
. Это проверяет, соответствуют ли символы в строке в начале другой строки
"abcde".startswith("abc") -> true
"abcde".startswith("bcd") -> false
Существует также endswith()
для проверки на другом конце.
Ответ 4
Вы можете внести несколько изменений.
elif 'This is correct' in text[:len('This is correct')]:
или
elif ' This is correct ' in ' '+text+' ':
Оба работают. Последний более гибкий.
Ответ 5
На самом деле, вы должны искать строку "Это правильно", окруженную границами слов.
Так
import re
if re.search(r'\bThis is correct\b', text):
print('correct')
должен работать на вас.
Ответ 6
Ниже приведено решение без использования регулярных выражений. Программа ищет точное слово в этом случае "CASINO" и печатает предложение.
words_list = [ "The Learn Python Challenge Casino.", "They bought a car while at
the casino", "Casinoville" ]
search_string = 'CASINO'
def text_manipulation(words_list, search_string):
search_result = []
for sentence in words_list:
words = sentence.replace('.', '').replace(',', '').split(' ')
[search_result.append(sentence) for w in words if w.upper() ==
search_string]
print(search_result)
text_manipulation(words_list, search_string)
Это напечатает результаты - ["Казино Learn Python Challenge". "Они купили машину, находясь в казино"]
Ответ 7
Разделите строку в список строк с помощью.split(), затем используйте оператор in.
Это намного проще, чем использование регулярных выражений.