如何在句子中搜索单词,但是如果它是python中另一个单词的一部分,则将其忽略

时间:2019-09-23 06:05:27

标签: python search

所以我的一个朋友建立了一个CPPS(俱乐部企鹅专用服务器)并用python建立了一个誓言过滤器,但要求我看看它,因为它需要更新。但是,我发现他输入了诸如FAK之类的其他选项,这意味着当您键入FAKE时,它会踢您起誓。如何仅搜索单词,如果它是另一个单词的一部分,则忽略它,还是我需要添加一个备用单词列表以忽略? (请注意,下面的代码是我认为您需要的代码,但是其中一些代码是用于连接数据库或客户端的,因此,请根据需要进行重做,我只需要一行代码来忽略假冒或确保它是仅屏幕上的单词,而不是另一个单词的一部分) 谢谢

到目前为止,我所能做到的最好的就是从他的数据库中完全删除FAK,但这只是让人们疯狂地使用他们所说的话。

@Handlers.Throttle(0.5)
def handleSendMessage(self, data):
    if data.Id != self.user.ID:
        return self.transport.loseConnection()
badWords = ["fak"]

    for badWord in badWords:
        badWord = badWord.upper()
        if badWord in data.Message.upper():
            return self.server.players[self.user.ID].sendErrorAndDisconnect(800)
    self.room.sendXt("sm", self.user.ID, data.Message)

我希望代码在其CPPS上启动后,将能够检测到该人说的话实际上是在咒骂,还是他们只是在说带有该词字母的内容。

1 个答案:

答案 0 :(得分:0)

import re

pattern = '|'.join(fr'\b{word}\b' for word in badwords)
if re.search(pattern, data.Message.casefold()):
    return self.server.players[self.user.ID].sendErrorAndDisconnect(800)