0%

Python练习册:0012

题目

    敏感词文本文件 filtered_words.txt,里面的内容 和 0011题一样,当用户输入敏感词语,则用 星号 * 替换,例如当用户输入「北京是个好城市」,则变成「**是个好城市」。

分析

思路和0011题一样,接着使用str.replace方法,将敏感词替换为*。

代码

  • 普通版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
with open('filtered_words.txt','r') as f:
#读取内容到一个列表,并过滤每项中的'\n'
text = ''.join(f.readlines()).strip('\n').split()

while True:
#读取输入
line = input("> ")
#循环替换一遍
for words in text:
#根据敏感词长度打印*的长度
line = line.replace(words,len(words)*‘*’)

print(line)

  • 高效版,从Github上找一个DFA,BF算法实现的匹配过滤,由于python2写的,我们可以简单修改一下,去除编码部分的判断即可在Python3下正常使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
from wfgfw import DFAFilter

#构造DFAFilter对象
f = DFAFilter()
#添加关键词
f.parse('filtered_words.txt')

while True:
msg = input(">")
#过滤消息,默认返回(布尔值,过滤过的内容)
_,out = f.filter(msg)
print(out)

参考

欢迎关注我的其它发布渠道