基本上我在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()
请帮忙!
如果我输入其中一个单词,它就有效。但是当我尝试在整个邮件中搜索关键字时,它不起作用。
答案 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初学者来说更容易理解。