Подтвердить что ты не робот

Как проверить правильное слово в строке в python

В основном мне нужно найти способ найти способ найти ТОЧНОЕ слово в строке. Вся информация, которую я читал в Интернете, только дала мне, как искать буквы в строке, поэтому

98787Это правильно

все равно вернется как истина в выражении if.

Это то, что у меня есть до сих пор.

  elif 'This is correct' in text:
    print("correct")

Это будет работать с любой комбинацией букв перед правилом... Например, fkrjCorrect, 4123Correct и lolcorrect будут возвращены как истинные в инструкции if. Когда я хочу, чтобы он вернулся как истинный, только если он точно соответствует "Это правильно",

4b9b3361

Ответ 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.

Это намного проще, чем использование регулярных выражений.