是否有一种方法可以停止在不同的单词中检测单词的一部分?



很抱歉,如果标题有点令人困惑,我会尽我所能在这里进一步解释!

我正在设置一个不和聊天机器人,遇到了一个有趣的问题。我们的机器人叫Ed,当我们想从他那里得到什么东西时,我们总是叫他的名字,然而,我意识到,自从neEd这个词以来,有艾德在里面,我们可以不小心调用他的一些函数。我在想我怎样才能简单明了地只考虑"ed"本身,而不是其他。

@bot.listen()
async def on_message(positive):
if positive.author == bot.user:
return

if 'positivity' in positive.content.lower() and 'ed' in positive.content.lower():
await positive.channel.send(random.choice(positivity))

之后,我尝试像这样更改代码,只考虑'Ed'之前是否有空格,但如果他的名字是你输入的第一个东西,这会导致问题。

@bot.listen()
async def on_message(positive):
if positive.author == bot.user:
return

if 'positivity' in positive.content.lower() and ' ed' in positive.content.lower():
await positive.channel.send(random.choice(positivity))

我是编程新手,我相信解决方案非常简单,任何帮助都会很感激!

我想positive.content.lower()是一个句子或一个段落。

那么为什么我们不用:

来分隔每个空格呢?
word_list = (positive.content.lower() + " ").split(" ")
if "ed" in word_list and "positivity" in word_list:
await positive.channel.send(random.choice(positivity))

在末尾添加的空格是为了确保我们至少有一个空格,这样我们就不会得到一个字母列表而不是一个单词列表。