Python实现敏感词过滤替换
2024-10-16 21:05:05
[本文出自天外归云的博客园]
问题
最近在网上搜到了一些练习题,对第十二题稍作修改如下:
敏感词文本文件“filtered_words.txt”,里面的内容:
北京人
人大
北京
程序员
公务员
领导
牛比
牛逼
你娘
你妈
love
sex
jiangge
当用户输入敏感词语,则用星号“*”替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。
思路
这道题练习的是字符串的替换,不过如果不小心的话很容易把过程想简单。在过程中会涉及到递归方法的使用,在Windows下用python2还涉及到编码的转换,要考虑到的是过滤完一遍字符串后可能并没有过滤完的情况,例如在过滤一遍并将敏感字符串替换之后剩余字符串中新组成了敏感词语的情况。这种情况就要用递归来解决,直到过滤替换完一遍之后的结果和过滤之前一样没有发生改变才能视为替换完成,否则在逻辑上是有疏漏的。
编写脚本
代码如下:
# -*- coding: utf-8 -*-
import os
curr_dir = os.path.dirname(os.path.abspath(__file__))
filtered_words_txt_path = os.path.join(curr_dir,'filtered_words.txt')
import chardet def filter_replace(string):
string = string.decode("gbk")
filtered_words = []
with open(filtered_words_txt_path) as filtered_words_txt:
lines = filtered_words_txt.readlines()
for line in lines:
filtered_words.append(line.strip().decode("gbk"))
print replace(filtered_words, string) def replace(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 replace(filtered_words,new_string) if __name__ == '__main__':
filter_replace(raw_input("Type:"))
运行测试结果:
最新文章
- Ruby之基本数据类型(三)
- 第一章 基础设施,1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的(作者:蔡华)
- Golang学习 - sort 包
- MySQL 行子查询(转)
- ListView视图缓存错位问题
- hdu 1263 水果
- 【SICP读书笔记(二)】使用过程来黏合数据 —— 酷炫吊的消息传递机制
- 天天果园,中粮我买网等生鲜APP竞品分析
- 在Eclipse如何实现在xml文件实现代码提示
- 201521123107 《Java程序设计》第3周学习总结
- java 5并发中的阻塞队列ArrayBlockingQueue的使用以及案例实现
- [原创]手把手教你写网络爬虫(7):URL去重
- jpa Auditor 自动赋值与自定义 @CreatedBy @LastModifiedBy @CreatedDate @LastModifiedDate
- [微信跳转链接]之WAP浏览器跳转微信指定页面,微信跳转链接
- CCTV5 前端
- NET-SNMP基本命令
- .gho文件检查
- 指针delete之后赋值为null
- 恢复VS2010/VS2013项目为VS2008项目
- MySQL数据库----事务处理