应用场景:
有时我们从网上采集了大量的关键词,因为是采集的,难免其中含有一些敏感关键词,如果是做中文站的话,最好将这些关键词去掉。在网上找到了一个Python脚本,不过是python 2.x的,我修改了一下,改成了python 3.X的,在改的过程中遭遇如下错误:
python TypeError: a bytes-like object is required, not 'str'
TypeError: 'in ' requires string as left operand, not bytes
其实主要是因为python2和python3的编码问题,只要将原代码中的“encode('utf-8')”这些去掉就可以了。
最终运行结果如下(过滤了原来文件中的“funny”、“guy”这两个单词):

代码如下:
3 | op_txt = open( 'done.txt' , 'a' ) |
6 | '' 'Filter Messages from keywords |
8 | very simple filter implementation |
12 | >>> f.filter( "hello sexy baby" ) |
17 | self.keywords = set([]) |
19 | def parse(self, path): |
20 | for keyword in open(path): |
21 | self.keywords.add(keyword.strip().lower()) |
24 | def filter(self, message, replss= "*" ): |
26 | message = message.lower() |
28 | for k in self.keywords: |
30 | message = message.replace(k, replss) |
33 | op_txt.write( '%s\n' % message) |
38 | if __name__ == '__main__' : |
40 | f.parse( "illegal.txt" ) # 这里面放要敏感词或不想要的词等 |
41 | a = [i.strip() for i in open( 'keywords.txt' ).readlines()] # keywords.txt是将要过滤的词库 |
原文在这里:http://bigwayseo.com