你如何在python中搜索标记的关键字?

时间:2018-05-04 21:55:59

标签: python string

我有一系列被禁止的关键字(取自Adwords):

360Dreams
Cannabidiol (CBD)
rage
ナプロキセン
يفيترا
คอนเซอตา
คอนเซอต้า

我希望看一个字符串是否包含任何这些单词。

我的第一种方法涉及此if keyword.lower() in mystring.lower(),但我很快意识到术语rage正在标记句子

  

本产品采用Ancho rage 制造。

我考虑过使用正则表达式以字母数字方式对输入字符串进行标记,但是如果查看禁止关键字列表,其中一些字符包含非字母数字字符。

那里有哪些库可以处理这种类型的标记化和关键字比较吗?

我还能做些什么来更有效地完成任务?

1 个答案:

答案 0 :(得分:0)

你可以构造一个正则表达式模式,当它找到一个双方都有空格或字符串边界的禁止词时匹配:

import re

banned = [re.escape(line) for line in
          '''360Dreams
Cannabidiol (CBD)
rage
ナプロキセン
يفيترا
คอนเซอตา
คอนเซอต้า'''.splitlines()]

pattern = r'(^|\s)(%s)($|\s)' % '|'.join(banned)

这是一个演示:

text = 'hello world Cannabidiol (CBD) stuff RAGE anchorage things 360Dreams'

print(re.sub(pattern, '****', text, flags=re.IGNORECASE | re.UNICODE))
# hello world****stuff****anchorage things****

在实践中,您需要检查re.search(pattern, text, flags=re.IGNORECASE | re.UNICODE)