Home >  > 关键词过滤脚本

关键词过滤脚本

0

应用场景:
有时我们从网上采集了大量的关键词,因为是采集的,难免其中含有一些敏感关键词,如果是做中文站的话,最好将这些关键词去掉。在网上找到了一个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”这两个单词):

代码如下:

1import sys
2 
3op_txt = open('done.txt', 'a')
4 
5class NaiveFilter():
6    '''Filter Messages from keywords
7 
8    very simple filter implementation
9 
10    >>> f = NaiveFilter()
11    >>> f.add("sexy")
12    >>> f.filter("hello sexy baby")
13    hello **** baby
14    '''
15 
16    def __init__(self):
17        self.keywords = set([])
18 
19    def parse(self, path):
20        for keyword in open(path):
21            self.keywords.add(keyword.strip().lower())
22        # print self.keywords
23 
24    def filter(self, message, replss="*"):
25        # print(message)
26        message = message.lower()
27        # print(message)
28        for k in self.keywords:
29            if k in message:
30                message = message.replace(k, replss)
31            else:
32                pass
33        op_txt.write('%s\n' % message)
34        print(message)
35        # return message
36 
37 
38if __name__ == '__main__':
39    f = NaiveFilter()
40    f.parse("illegal.txt")  # 这里面放要敏感词或不想要的词等
41    a = [i.strip() for i in open('keywords.txt').readlines()]  # keywords.txt是将要过滤的词库
42    c = len(a)
43    for i in range(c):
44        f.filter(a[i])

原文在这里:http://bigwayseo.com

暧昧帖

本文暂无标签

发表评论

*

*