如何检查句子是否包含Python中的某个单词然后执行操作?

时间:2010-10-09 21:31:03

标签: python input

假设我问用户原始输入,他们说:“这是一条消息。”如果该原始输入包含单词“message”,则它将在此之后执行操作。我能看出这是怎么做到的吗?

4 个答案:

答案 0 :(得分:8)

基于@knitti的评论,问题是你需要先将句子分成单词,然后检查:

term = "message" #term we want to search for
input = raw_input() #read input from user

words = input.split() #split the sentence into individual words

if term in words: #see if one of the words in the sentence is the word we want
    do_stuff()

否则,如果您有“那是经典之作”的句子并且您试图检查它是否包含单词“ass”,则会错误地返回True。

当然,这仍然不是很完美,因为那时你可能不得不担心像删除标点符号而不是(比如,等等),因为否则句子“那个是经典的”。搜索“经典”时仍会返回False(因为最后的句号)。而不是重新发明轮子,这是一篇关于从Python句子中删除标点符号的好文章:

Best way to strip punctuation from a string in Python

还要考虑区分大小写,因此您可能希望在进行搜索之前将raw_input结果和搜索字词更改为小写。您只需使用lower()类上的str函数即可轻松完成此操作。

这些问题似乎总是很简单......

答案 1 :(得分:1)

这当然是一个非常简单的例子:

if "message" in raw_input():
    action()

如果您需要将不同的单词映射到不同的操作,那么您可以执行以下操作:

# actions
def action():
    print "action"

def other_action():
    print "other action"

def default_action():
    print "default action"

# word to action translation function
def word_to_action(word):
    return {
        "message":  action,
        "sentence": other_action
    }.get(word, default_action)()

# get input, split into single words
w = raw_input("Input: ").split()

# apply the word to action translation to every word and act accordingly
map(word_to_action, w)

请注意,这也为输入不包含任何触发词的情况定义了默认操作。

有关上述映射习惯用法的更多详细信息,请参阅here,这实际上是Python实现'switch statement'的方式。

答案 2 :(得分:0)

if "message" in sentence:
    do_action()

答案 3 :(得分:0)

sentence = input('Enter the sentence: ').split()

split()方法将句子逐字地打断并放入列表中。

 user_input = input('Enter the word to find: ')

 for word in range(len(sentence)):
     if user_input in sentence:
         print('Word Prensent in sentence')
         break

     if user_input not in sentence:
         print('word not present in sentence')
         break