题目链接:https://github.com/Show-Me-the-Code/show-me-the-code
代码github链接:https://github.com/wjsaya/python_spider_learn/tree/master/python_daily
个人博客地址:https://wjsaya.github.io
第 0012 题: 敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。

北京
程序员
公务员
...

思路:

  1. 从文件解析敏感词、从终端获取用户输入。
  2. 根据敏感词对用户输入进行过滤。这里过滤需要考虑到输入内容不止一个需要过滤的词,所以稍微麻烦点:
    1. 读取所有的屏蔽词,放进一个列表
    2. 获取用户输入
    3. 遍历屏蔽词列表,用屏蔽词检索用户输入
      • 如果有屏蔽词,将其替换为*
      • 如果没有,不进行操作
      • 返回处理后的用户输入
      • 用下一个屏蔽词对处理后的用户输入进行上述操作
    4. 所有屏蔽词遍历完毕,输出过滤后字符串

敏感词列表(filtered_words.txt)

北京
程序员
公务员
领导
牛比
牛逼
你娘
你妈
love
sex
jiangge

代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author:  wjsaya(http://www.wjsaya.top)
# @Date:    2018-08-10 12:33:32
# @Last Modified by:    wjsaya(http://www.wjsaya.top)
# @Last Modified time:  2018-08-13 23:02:29 class fliter():'''fliter类 \n传入敏感词文件 \n获取用户输入,根据敏感词文件对输入进行过滤'''def __init__(self, fileName):dirty_dict = self.get_dirty(file)self.fliteredString = self.fliterMaster(dirty_dict)def get_dirty(self, fileName=''):'''解析文件获取敏感词,返回一个敏感词列表'''with open (fileName, 'r', encoding='utf-8') as f:re = f.readlines()for i in range(len(re)):re[i] = re[i].strip('\n')return(re)def fliterMaster(self, dirty_dict):'''过滤主函数 \n 获取用户输入,获取待屏蔽词典 \n 遍历屏蔽词 ,进行过滤\n返回屏蔽后字符串'''instr = input("不要输入敏感词哦:")self.originString = instr# instr = ("程序员很牛比,但是运维更牛逼")for i in dirty_dict:               inArray = self.str2array(instr)inDirtArray = self.str2array(i)pos_list = self.get_pos(inArray, inDirtArray[0])if pos_list is None:    # 未找到可能存在的屏蔽词,跳过过滤部分continueelse:   # 可能有屏蔽词,交给fliterWorker进一步处理for tag in pos_list:inArray = self.fliterWorker(tag, inArray, inDirtArray)instr = ''.join(inArray)return instrdef str2array(self, instr):'''字符串单个拆分为数组'''redict = []for i in instr:redict.append(i)return redictdef get_pos(self, instr, word):'''传入句子,传入词 \n找出此词在居中的所有位置'''try:re = instr.index(word)resp = []resp.append(re)while(1):try:re = instr.index(word, re+1, len(instr))resp.append(re)except Exception as e:breakreturn respexcept Exception as e:return Nonedef fliterWorker(self, tag, inArray, inDirtArray):'''IN:字符数组;屏蔽词数组;可能存在屏蔽词的位置 \nOUT:替换完毕之后的字符数组'''resp = ""resp_temp = "" for i in range(tag):    # 0-pos不变,从pos开始向后匹配resp += inArray[i]for i in range(len(inDirtArray)):if inArray[tag+i] == inDirtArray[i]:# 字符数组和屏蔽词数组从左向右匹配,如果匹配到一个,resp_temp追加一个*# 任一过滤词没匹配到,resp_temp直接置为空resp_temp += "*"else:resp_temp = ''breakif resp_temp == '': # resp_temp为空,直接返回原字符数组return inArrayelse:   # resp_temp非空,则有匹配,把resp_temp加到原字符数组resp += resp_tempfor i in range(tag+len(inDirtArray), len(inArray)):# resp_temp加完之后,把原句剩下的内容追加resp += inArray[i]return respif __name__ == '__main__':file = 'filtered_words.txt'fliter1 = fliter(file)print("未过滤字符串为:" + fliter1.originString)print("过滤后字符串为:" + fliter1.fliteredString)

效果图:

[python每日一练]--0012:敏感词过滤 type2相关推荐

  1. [python每日一练]--0011:敏感词过滤 type1

    题目链接:https://github.com/Show-Me-the-Code/show-me-the-code 代码github链接:https://github.com/wjsaya/pytho ...

  2. 【python 走进NLP】英文敏感词过滤算法改进版本

    中文DFA算法过滤敏感词改进版本 # 中文DFA算法过滤敏感词改进版本 class Chinese_DFAFilter():def __init__(self):self.keyword_chains ...

  3. python中哪些词是敏感字词_python实现敏感词过滤的几种方法

    1.replace过滤 最简单也是最直接的就是直接循环敏感词,然后使用replace过滤关键词,文章和敏感词少的时候还可以,多的时候效率就真的很一般了. 2.使用正则过滤 有两个技术要点, 1.使用P ...

  4. python骂人的程序_Python实现敏感词过滤的4种方法

    在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...

  5. python敏感词过滤代码简单_大型企业都在用,Python实现敏感词过滤

    在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...

  6. dfa算法c语言,DFA跟trie字典树实现敏感词过滤(python和c语言)

    DFA和trie字典树实现敏感词过滤(python和c语言) 现在做的项目都是用python开发,需要用做关键词检查,过滤关键词,之前用c语言做过这样的事情,用字典树,蛮高效的,内存小,检查快. 到了 ...

  7. python敏感词过滤replace_Serverless 实战:3 分钟实现文本敏感词过滤

    敏感词过滤是随着互联网社区一起发展起来的一种阻止网络犯罪和网络暴力的技术手段,通过对可能存在犯罪或网络暴力的关键词进行有针对性的筛查和屏蔽,能够防患于未然,将后果严重的犯罪行为扼杀于萌芽之中. 随着各 ...

  8. python敏感词过滤代码简单代码_Python 实现王者荣耀中的敏感词过滤示例

    Python 实现王者荣耀中的敏感词过滤示例 王者荣耀的火爆就不用说了,但是一局中总会有那么几个挂机的,总能看到有些人在骂人,我们发现,当你输入一些常见的辱骂性词汇时,系统会自动将该词变成" ...

  9. python爬取整个网站的广告敏感词_Python实现敏感词过滤的4种方法

    在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...

最新文章

  1. 我的世界java版怎么添加光影,《我的世界》中国版光影添加教程 国服怎么添加光影?...
  2. 2021年5G发展展望
  3. python获取列表中元素的索引
  4. 科学家公布地球“裸照”
  5. [云炬创业基础笔记] 第四章测试1
  6. java高并发(二十)HashMap与ConcurrentHashMap
  7. BZOJ - 2186 欧拉函数
  8. 6-10 阶乘计算升级版(20 分)
  9. 异步通知《来自Linux驱动程序开发实例》
  10. 【Flink】Flink UI 查看 subtask在相应的机器上的调度时间
  11. 记一次css载入指定url失败
  12. 飞利浦 f718 java 微信_第一次使用飞利浦F718手机感觉怎么样及优缺点
  13. 中国超级计算机城市,“霾没”全国104个城市 华北华东多地爆表
  14. 如果你想专升本那就一定要看的文学常识完整版(三)
  15. java毕业设计医院各科室财务管理2021Mybatis+系统+数据库+调试部署
  16. 【Android】【MTK】MTK系统启动流程
  17. c语言switch优点,关于C语言switch
  18. 计算机闹铃音乐是什么歌,适合当闹铃的歌曲
  19. 2022年法定节假日JSON格式文件
  20. weedfs php,Weed-FS之Volume数据迁移

热门文章

  1. 先储值再消费表计DTSY1352-NK导轨式内控预付费电能表
  2. Excel中累计计算公式中常见的$B$2:B2,如何理解?
  3. 5.1 px30 - rt5640音频驱动
  4. 桶排序算法:topK元素golang实现
  5. python使用bs4获取网页排行榜数据(基础版)
  6. 数据分析基础—3.2 常见的数据获取途径
  7. tesseract-ocr 实现图片识别功能
  8. 北京大学曹健——Tensorflow笔记 01
  9. CSS 边框样式 文字样式 段落样式
  10. 知识通过行动成为力量