python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例

python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束第一步:建立一个敏感词库(.txt文本)第二步:编写代码在文章中过滤敏感词(递归实现)#-*-coding:utf-8-*-#author代序春秋importosimportchardet#获取文件目录和绝对路径curr_dir=os.path.di…

大家好,又见面了,我是你们的朋友全栈君。

过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束

第一步:建立一个敏感词库(.txt文本)

python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例

第二步:编写代码在文章中过滤敏感词(递归实现)

# -*- coding: utf-8 -*-

# author 代序春秋

import os

import chardet

# 获取文件目录和绝对路径

curr_dir = os.path.dirname(os.path.abspath(__file__))

# os.path.join()拼接路径

sensitive_word_stock_path = os.path.join(curr_dir, ‘sensitive_word_stock.txt’)

# 获取存放敏感字库的路径

# print(sensitive_word_stock_path)

class ArticleFilter(object):

# 实现文章敏感词过滤

def filter_replace(self, string):

# string = string.decode(“gbk”)

# 存放敏感词的列表

filtered_words = []

# 打开敏感词库读取敏感字

with open(sensitive_word_stock_path) as filtered_words_txt:

lines = filtered_words_txt.readlines()

for line in lines:

# strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

filtered_words.append(line.strip())

# 输出过滤好之后的文章

print(“过滤之后的文字:” + self.replace_words(filtered_words, string))

# 实现敏感词的替换,替换为*

def replace_words(self, filtered_words, string):

# 保留新字符串

new_string = string

# 从列表中取出敏感词

for words in filtered_words:

# 判断敏感词是否在文章中

if words in string:

# 如果在则用*替换(几个字替换几个*)

new_string = string.replace(words, “*” * len(words))

# 当替换好的文章(字符串)与被替换的文章(字符串)相同时,结束递归,返回替换好的文章(字符串)

if new_string == string:

# 返回替换好的文章(字符串)

return new_string

# 如果不相同则继续替换(递归函数自己调用自己)

else:

# 递归函数自己调用自己

return self.replace_words(filtered_words, new_string)

def main():

while True:

string = input(“请输入一段文字:”)

run = ArticleFilter()

run.filter_replace(string)

continue

if __name__ == ‘__main__’:

main()

运行结果:

python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助

您可能感兴趣的文章:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136876.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • BindingNavigator 类

    BindingNavigator 类v/:*{behavior:url(#default#VML);}o/:*{behavior:url(#default#VML);}w/:*{behavior:url(#default#VML);}.shape{behavior:url(#default#VML);}Normal002

    2022年7月12日
    16
  • tabnine pro 激活码【中文破解版】

    (tabnine pro 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    55
  • 相机标定(一)-原理及内参、外参

    相机标定(一)-原理及内参、外参在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。…

    2022年5月28日
    45
  • css3 媒体类型(Media Type)[通俗易懂]

    css3 媒体类型(Media Type)[通俗易懂]linkhref=”css/reset.css”rel=”stylesheet”type=”text/css”media=”screen”/>linkhref=”css/style.css”rel=”stylesheet”type=”text/css”media=”all”/>linkhref=”css/print.css”rel=”stylesheet”ty

    2022年5月20日
    45
  • Java中的重载、重写和重构的区别

    Java中的重载、重写和重构的区别1、重载重载(overloaded):重载就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。我们知道构造方法的名称已经由类名决定,所以构造方法只有一个名称,但如果希望以不同的方式来实例化对象,就需要使用多个构造方法来完成。由于这些构造方法都需要根据类名进行命名,为了让方法名相同而形参不同的构造方法同时存在,必须用到“方法重载”,虽然方法重载起源于构造方…

    2022年7月8日
    21
  • 直通串口线和交叉串口线

    直通串口线和交叉串口线直通串口线和交叉串口线

    2022年6月19日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号