如何在Python列表中找到regexp模式?

2024-05-15 22:57:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个坏词清单。假设是:

BAD_WORDS = ['bw1', 'bw2',...] 

现在我想知道在如下代码中检查长字符串(又称django请求post)最有效的方法是什么:

if re.search(comment.body) in BAD_WORDS:        
        dosomething;

Tags: django方法字符串代码researchifcomment
2条回答

最好的方法是用一种表达方式来表达所有的坏话:

import re
bad_words = ['bw1', 'bw2', ... ]

my_expression = '|'.join(re.escape(word) for word in bad_words)
if re.search(my_expression, comment.body):
    do_something()

你可以用any来做这个。你知道吗

要仅匹配子字符串而不是精确的单词,可以使用in运算符:

if any(word in comment.body for word in BAD_WORDS):
    #do something

要匹配精确的单词,请使用regex

import re
if any(re.search(r'\b{}\b'.format(re.escape(word)), comment.body)
                                                            for word in BAD_WORDS):
    #do something

相关问题 更多 >