我正在使用Python,我试图找出你是否可以判断一个单词是否在字符串中。

我找到了一些关于识别单词是否在字符串中的信息-使用.find,但是否有一种方法来执行if语句。我想要这样的东西:

if string.find(word):
    print("success")

当前回答

您可以将字符串拆分为单词并检查结果列表。

if word in string.split():
    print("success")

其他回答

出了什么问题:

if word in mystring: 
   print('success')

如果匹配字符序列还不够,需要匹配整个单词,这里有一个简单的函数可以完成这项工作。它基本上是在必要的地方添加空格,并在字符串中搜索空格:

def smart_find(haystack, needle):
    if haystack.startswith(needle+" "):
        return True
    if haystack.endswith(" "+needle):
        return True
    if haystack.find(" "+needle+" ") != -1:
        return True
    return False

这里假设逗号和其他标点符号已经被去掉。

高级的方法来检查确切的单词,我们需要在一个长字符串中找到:

import re
text = "This text was of edited by Rock"
#try this string also
#text = "This text was officially edited by Rock" 
for m in re.finditer(r"\bof\b", text):
    if m.group(0):
        print("Present")
    else:
        print("Absent")

我相信这个答案更接近最初的问题:在字符串中查找子字符串,但只有在整个单词?

它使用了一个简单的正则表达式:

import re

if re.search(r"\b" + re.escape(word) + r"\b", string):
  print('success')

这个小函数比较给定文本中的所有搜索词。如果在文本中找到所有搜索词,则返回搜索长度,否则返回False。

也支持unicode字符串搜索。

def find_words(text, search):
    """Find exact words"""
    dText   = text.split()
    dSearch = search.split()

    found_word = 0

    for text_word in dText:
        for search_word in dSearch:
            if search_word == text_word:
                found_word += 1

    if found_word == len(dSearch):
        return lenSearch
    else:
        return False

用法:

find_words('çelik güray ankara', 'güray ankara')