2014-02-11 44 views

回答

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() 
+1

很好的回答,但是,我会通过'标志= re.IGNORECASE'进入re.search以解决不区分大小写的问题。 – Rishi

+1

@Rishi我会说,这将不得不由实施者决定,而不是由答复者提出。可能是'ass'是一个被审查的工作,但是'ASS'是青少年智商协会等。 –

+0

@Rishi我应该如何添加标志? – supermario

1

您可以使用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 
+0

优雅的解决方案。谢啦! – supermario