29

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

98787这是正确的

仍然会在 if 语句中返回为真。

这就是我到目前为止所拥有的。

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

这将适用于正确之前的任何字母组合...例如 fkrjCorrect、4123Correct 和 lolcorrect 在 if 语句中都将返回为真。当我希望它返回为真时,仅当它完全匹配“这是正确的”时

4

8 回答 8

30

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

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断言替换为^and$以将匹配限制在行的开头和结尾。

于 2013-09-05T09:39:02.240 回答
16

使用比较运算符==而不是inthen:

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

这将检查整个字符串是否只是'This is correct'. 如果不是,它将是False

于 2013-09-05T09:24:06.977 回答
8

实际上,您应该寻找被单词边界包围的“这是正确的”字符串。

所以

import re

if re.search(r'\bThis is correct\b', text):
    print('correct')

应该为你工作。

于 2013-09-05T13:17:53.393 回答
5

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

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

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

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

于 2013-09-05T13:08:14.663 回答
3

您可以进行一些更改。

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

或者

elif ' This is correct ' in ' '+text+' ':

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

于 2013-09-05T10:48:54.357 回答
0

下面是一个不使用正则表达式的解决方案。程序在这种情况下搜索确切的单词“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.', '他们在赌场买了一辆车']

于 2019-10-12T04:47:35.537 回答
0

如果我们想在不使用正则表达式的情况下解决它,这可能是一个复杂的问题。但我想出了一个小技巧。

  • 首先,我们需要用空格填充原始字符串。
  • 之后我们可以搜索文本,该文本也用空格填充。

这里的示例代码:

incorrect_str = "98787This is correct"
correct_str = "This is a great day and This is correct"

# Padding with whitespaces
new_incorrect_str = " " + incorrect_str + " "
new_correct_str = " " + correct_str + " "

if " This is correct " in new_correct_str:
    print("correct")
else:
    print("incorrect")
于 2021-09-15T21:02:49.377 回答
-1

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

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

于 2017-01-15T12:03:03.610 回答