我有一个坏词的列表。比方说,它是:如何在Python列表中查找正则表达式模式?
BAD_WORDS = ['bw1', 'bw2',...]
现在我想知道什么是喜欢一个代码来检查长字符串(又名Django的请求后)的最有效的方法:
我有一个坏词的列表。比方说,它是:如何在Python列表中查找正则表达式模式?
BAD_WORDS = ['bw1', 'bw2',...]
现在我想知道什么是喜欢一个代码来检查长字符串(又名Django的请求后)的最有效的方法:
的最佳方式对所有不良词使用一个表达式:
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
优雅的解决方案。谢啦! – supermario
很好的回答,但是,我会通过'标志= re.IGNORECASE'进入re.search以解决不区分大小写的问题。 – Rishi
@Rishi我会说,这将不得不由实施者决定,而不是由答复者提出。可能是'ass'是一个被审查的工作,但是'ASS'是青少年智商协会等。 –
@Rishi我应该如何添加标志? – supermario