如何在输入的消息中搜索四个关键字

时间:2013-01-05 15:41:11

标签: python string

基本上我在Python中为我设置了一个任务。它是在一个估算的信息中搜索这4个关键词:炸弹,核武器,恐怖分子和戈登布朗,。然后,我必须输出是否是“ SAFE ”消息或“ UNSAFE ”消息。

到目前为止,这是我得到的(我在Python上有点像菜鸟。我还在学习语言。):

keyWord = "bomb"
keyWord1 = "nuclear"
keyWord2 = "terrorist"
keyWord3 = "gordon brown"

def textSearch():
    message = input("Input a message: ")
    if message == keyWord + keyWord1 + keyWord2 + keyWord3:
        print("This is message is UNSAFE!")
    else:
        print("This is a SAFE message.")

textSearch()

请帮忙!

如果我输入其中一个单词,它就有效。但是当我尝试在整个邮件中搜索关键字时,它不起作用。

3 个答案:

答案 0 :(得分:0)

您目前正在寻找特定消息:

“bombnuclearterroristgordon brown”

您要使用的是in,它会在您的字符串中找到子字符串。对每个关键字执行此操作:

if keyWord in message:
    #keyWord exists in message

如果您将关键字放在列表中会更容易,那么您可以循环它们:

keywords = ["bomb", "nuclear", "terrorist", "gordon brown"]

for keyword in keywords:
    if keyword in message:
        #Bad message!

更整洁的是使用列表理解和any()函数,它在一行中实现与上面相同的功能:

bad = any(keyword in message for keyword in keywords)

或者,如果您需要对子字符串的位置执行某些操作,则可以使用find()返回第一个匹配位置的索引:

position = message.find(keyword) 
if position > -1:
    #Bad message

答案 1 :(得分:0)

message == keyWord + keyWord1 + keyWord2 + keyWord3

如果message完全等于'bombnuclearterroristgordon brown',则为真。您可能希望使用in运算符来检查成员身份。

keyWord in message or keyWord1 in message or keyWord2 in message or keyWord3 in message

......这显然很麻烦,但你有很好的Python选择。首先列出关键字而不是单个名称:

keyWords = ["bomb", "nuclear", "terrorist", "gordon brown"]

然后,使用列表理解:

if [keyWord in message for keyWord in keyWords]:
    …

答案 2 :(得分:0)

您可以定义一个“禁止”关键字列表,如下所示:

keywords = ["bomb", "nuclear", "terrorist"]

然后你可以迭代它们并检查它们是否包含在文本中:

for keyword in keywords:
    if keyword in message:
        print "unsafe"
        break

break用于在找到其中一个关键字后,停止迭代关键字。

你也可以通过这样的列表理解来做到这一点:

if [keyword in message for keyword in keywords]...

但我认为以前的解决方案对于Python初学者来说更容易理解。