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

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

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

当前回答

解决方案之一是在测试单词的开头和结尾放置一个空格。如果单词位于句首或句尾,或在任何标点符号旁边,则不适用。我的解决方案是编写一个函数,用空格替换测试字符串中的任何标点符号,并在开头和结尾或测试字符串和测试单词之间添加一个空格,然后返回出现的次数。这是一个简单的解决方案,不需要任何复杂的正则表达式。

def countWords(word, sentence):
    testWord = ' ' + word.lower() + ' '
    testSentence = ' '

    for char in sentence:
        if char.isalpha():
            testSentence = testSentence + char.lower()
        else:
            testSentence = testSentence + ' '

    testSentence = testSentence + ' '

    return testSentence.count(testWord)

计算一个单词在字符串中出现的次数:

sentence = "A Frenchman ate an apple"
print(countWords('a', sentence))

返回1

sentence = "Is Oporto a 'port' in Portugal?"
print(countWords('port', sentence))

返回1

使用'if'中的函数来测试单词是否存在于字符串中

其他回答

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

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

出了什么问题:

if word in mystring: 
   print('success')

使用regex是一种解决方案,但对于这种情况来说太复杂了。

您可以简单地将文本分割成单词列表。使用split(separator, num)方法。它返回字符串中所有单词的列表,使用分隔符作为分隔符。如果separator未指定,则对所有空格进行分割(您可以选择将分割的数量限制为num)。

list_of_words = mystring.split()
if word in list_of_words:
    print('success')

这将不工作的字符串与逗号等。例如:

mystring = "One,two and three"
# will split into ["One,two", "and", "three"]

如果你也想拆分所有的逗号等,使用分隔符参数如下:

# whitespace_chars = " \t\n\r\f" - space, tab, newline, return, formfeed
list_of_words = mystring.split( \t\n\r\f,.;!?'\"()")
if word in list_of_words:
    print('success')

由于您要求的是一个词,而不是一个字符串,我想提出一个解决方案,这是不敏感的前缀/后缀和忽略大小写:

#!/usr/bin/env python

import re


def is_word_in_text(word, text):
    """
    Check if a word is in a text.

    Parameters
    ----------
    word : str
    text : str

    Returns
    -------
    bool : True if word is in text, otherwise False.

    Examples
    --------
    >>> is_word_in_text("Python", "python is awesome.")
    True

    >>> is_word_in_text("Python", "camelCase is pythonic.")
    False

    >>> is_word_in_text("Python", "At the end is Python")
    True
    """
    pattern = r'(^|[^\w]){}([^\w]|$)'.format(word)
    pattern = re.compile(pattern, re.IGNORECASE)
    matches = re.search(pattern, text)
    return bool(matches)


if __name__ == '__main__':
    import doctest
    doctest.testmod()

如果你的单词可能包含正则表达式特殊字符(例如+),那么你需要re.escape(word)

你可以在"word"前后加一个空格。

x = raw_input("Type your word: ")
if " word " in x:
    print("Yes")
elif " word " not in x:
    print("Nope")

这样它会查找“word”前后的空格。

>>> Type your word: Swordsmith
>>> Nope
>>> Type your word:  word 
>>> Yes