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”这两个单词):

代码如下:

import sys

op_txt = open('done.txt', 'a')

class NaiveFilter():
    '''Filter Messages from keywords

    very simple filter implementation

    >>> f = NaiveFilter()
    >>> f.add("sexy")
    >>> f.filter("hello sexy baby")
    hello **** baby
    '''

    def __init__(self):
        self.keywords = set([])

    def parse(self, path):
        for keyword in open(path):
            self.keywords.add(keyword.strip().lower())
        # print self.keywords

    def filter(self, message, replss="*"):
        # print(message)
        message = message.lower()
        # print(message)
        for k in self.keywords:
            if k in message:
                message = message.replace(k, replss)
            else:
                pass
        op_txt.write('%s\n' % message)
        print(message)
        # return message


if __name__ == '__main__':
    f = NaiveFilter()
    f.parse("illegal.txt")  # 这里面放要敏感词或不想要的词等
    a = [i.strip() for i in open('keywords.txt').readlines()]  # keywords.txt是将要过滤的词库
    c = len(a)
    for i in range(c):
        f.filter(a[i])

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

本文暂无标签

发表评论

*

*