Как проверить, содержит ли предложение определенное слово в Python, а затем выполнить действие? - PullRequest
6 голосов
/ 10 октября 2010

Допустим, я прошу пользователя ввести необработанные данные, и они ответили: «Это сообщение»Если бы этот необработанный ввод содержал слово «сообщение», то после этого он выполнял бы действие.Могу ли я увидеть, как это можно сделать?

Ответы [ 4 ]

8 голосов
/ 10 октября 2010

Исходя из комментария @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()

В противном случае, если у вас было предложение "Это одинклассический ", и вы попытались проверить, содержало ли оно слово" задница ", оно вернуло бы True неправильно.

Конечно, это все еще не идеально, потому что тогда вам, возможно, придется беспокоиться о таких вещах, как удаление знаков препинанияа что нет (например, и т. д.), потому что в противном случае предложение «Это классика».будет по-прежнему возвращать False для поиска «классический» (из-за периода в конце).Вместо того, чтобы заново изобретать колесо, вот хороший пост об удалении знаков препинания из предложения в Python:

Лучший способ убрать пунктуацию из строки в Python

Есть case-Чувствительность также следует учитывать, поэтому перед выполнением поиска вы можете изменить результат raw_input и условие поиска на строчные.Вы можете легко сделать это, просто используя функцию lower() в классе str.

Эти проблемы всегда кажутся простыми ...

1 голос
/ 10 октября 2010

Это, конечно, очень простой пример:

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)

Обратите внимание, что это также определяет действие по умолчанию для случая, когда на входе нет ни одного из слов триггера.

См. здесь для более подробной информации о вышеупомянутой идиоме отображения, которая на самом делеСпособ Python для достижения «оператора switch».

0 голосов
/ 20 февраля 2019
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
0 голосов
/ 10 октября 2010
if "message" in sentence:
    do_action()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...