敏感词文本文件 filtered_words.txt,里面的内容 和 上一题一样,当用户输入敏感词语,则用 星号 * 替换
例如当用户输入「北京是个好城市」,则变成「**是个好城市」
#流程以及思路确定
"""
1. 用户输入一串文字 ,保存到user_input中
2.检查文字是否有敏感词,以及敏感词的具体位置。
2.1 文件迭代器读取敏感词
2.2 使用 str.find() 找到敏感词的位置
2.3 使用format方式替换掉敏感词??? 此方案pass
2.3 直接使用relpace方式替换掉敏感词!
3.一句话中可能含有多个敏感字,这个时候就要重复2的步骤。
4.使用 ** 替换掉敏感词对应的个数。
"""
user_input=input('Leave your comments: ')
for filter_word in open('filtered_words.txt'):
fw=filter_word.rstrip()
if fw in user_input:
fw_len=len(fw)
user_input=user_input.replace(fw,'*'*fw_len) #将user_input在原处进行修改,进行下一次循环查找。
else:
print(user_input)
执行后的输出:
Leave your comments: 北京是个好城市
**是个好城市
RESTART:
Leave your comments: 你妈妈在北京是一个公务员
**妈在**是一个***
敏感词的替换
对比上一题,这一题多出来的一个操作就是敏感词的替换!而针对敏感词的替换我们可能会想到使用find方法,找到该敏感词所在的地方,然后再格式化替换;不过这样过于繁琐了。
针对字符串,直接使用replace()方法就可以轻松实现。
敏感词替换多少个星号?
我们直到,在Python的多态特性中:
数据类型 | 星号的作用 |
---|---|
数值类型numberic | 乘法 |
字符串文本类型 | 重复次数 |
所以多少个星号我们只需要使用
len(敏感词)就可以了
在替代的时候:
user_input.relpace(敏感词,'*'*len(敏感词))
如果用户一句话中有多个敏感词呢?
我们上一题中的程序只要检测到一个敏感词,就会替换然后break出来。因为上一题的需求是检测是否含有敏感词。
这一次的需求是要将敏感词替换。所以要考虑的问题是 ,如果用户的一句话中有多个敏感词呢?
例如:你妈妈在北京是一个公务员
含有三个敏感词。所以针对上面进行修正。
这里的修改需要针对用户输入的那个语句的原处进行修改。
小程序来自于