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

时间:2013-09-05 09:22:39

标签: python string

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

  

98787这是正确的

在if语句中仍然会返回true。

这是我到目前为止所做的。

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

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

7 个答案:

答案 0 :(得分:11)

使用比较运算符==代替in,然后:

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

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

答案 1 :(得分:10)

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

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

答案 2 :(得分:2)

您可以进行一些更改。

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

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

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

答案 3 :(得分:2)

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

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

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

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

答案 4 :(得分:1)

实际上,您应该查找由字边界包围的“这是正确的”字符串。

所以

import re

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

应该适合你。

答案 5 :(得分: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)

这将打印结果-['学习Python挑战赌场。','他们在赌场购买了汽车']

答案 6 :(得分:-3)

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

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