如何在python中检查字符串中的确切单词

如何在python中检查字符串中的确切单词,python,string,Python,String,基本上,我需要找到一种方法来找到字符串中的确切单词。我在网上读到的所有信息只告诉我如何搜索字符串中的字母 这是正确的 在if语句中仍将返回为true 这就是我目前所拥有的 elif 'This is correct' in text: print("correct") 这将适用于正确的。。。例如,fkrjCorrect、4123Correct和lolcorrect在if语句中都返回为true。当我希望它仅在与“This is correct”(这是正确的)完全匹配时才返回为true

基本上,我需要找到一种方法来找到字符串中的确切单词。我在网上读到的所有信息只告诉我如何搜索字符串中的字母

这是正确的

在if语句中仍将返回为true

这就是我目前所拥有的

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

这将适用于正确的。。。例如,fkrjCorrect、4123Correct和lolcorrect在if语句中都返回为true。当我希望它仅在与“This is correct”(这是正确的)完全匹配时才返回为true时,请使用比较运算符
==
而不是
中的
,然后:

if text == 'This is correct':
    print("Correct")

这将检查整个字符串是否正确。如果不是,则为
False

您可以使用正则表达式的单词边界。例如:

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


编辑:要获得精确匹配,请将
\b
断言替换为
^
$
,以将匹配限制在行的开头和结尾。

您可以进行一些更改

elif 'This is correct' in text[:len('This is correct')]:


两者都有效。后者更为灵活

我怀疑您正在查找
startswith()
函数。这将检查字符串中的字符是否与另一个字符串的开头匹配

"abcde".startswith("abc") -> true

"abcde".startswith("bcd") -> false

还有一个
endswith()
函数,用于在另一端进行检查。

实际上,您应该查找由单词边界包围的“This is correct”字符串

所以


应该适合您。

使用.split()将字符串拆分为字符串列表,然后使用in运算符


这比使用正则表达式简单得多。

下面是一个不使用正则表达式的解决方案。程序在本例中搜索确切的单词“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)

这将打印结果-[“the Learn Python Challenge Casino.”,“他们在赌场买了一辆车”]

奇怪的是,你知道
操作符中,而不是
=
操作符。
=
中搜索子字符串,同时
=
检查是否完全相等。从您的问题标题中,我得到的印象是您确实在搜索子字符串(在这种情况下,
中的
是正确的)。但是从你的文章中我得到的印象是你真的想要检查平等吗?(在这种情况下,
==
是正确的)我确实想检查子字符串,我只是想确保它之前没有任何内容,你说的“确切的单词”是什么意思?你是说用空格分隔吗?标点符号?你可以使用spaCy短语匹配器。那不正确,因为我需要它来检查句子。。。不伸出一根绳子。。。所以这句话可能是,这是一个伟大的一天,这是正确的@user2750103尝试
导入re;如果重新搜索('\b此选项正确\b')不是无:打印('correct')
第二个选项似乎有效,但第一个选项无效。Py3.5第一个片段只是一种愚蠢的书写
文本的方式。startswith('This is correct')
。请不要将所有的大写字母用于完整的句子(通常解释为叫喊)。
import re

if re.search(r'\bThis is correct\b', text):
    print('correct')
    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)