Python小程序练习---敏感词替换成*星号

小程序需求说明:

敏感词文本文件 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:  你妈妈在北京是一个公务员
**妈在**是一个***

小结(always continue…)

整个小程序的重点:

敏感词的替换
对比上一题,这一题多出来的一个操作就是敏感词的替换!而针对敏感词的替换我们可能会想到使用find方法,找到该敏感词所在的地方,然后再格式化替换;不过这样过于繁琐了。
针对字符串,直接使用replace()方法就可以轻松实现。

敏感词替换多少个星号?
我们直到,在Python的多态特性中:

数据类型 星号的作用
数值类型numberic 乘法
字符串文本类型 重复次数

所以多少个星号我们只需要使用
len(敏感词)就可以了
在替代的时候:

user_input.relpace(敏感词,'*'*len(敏感词))

如果用户一句话中有多个敏感词呢?
我们上一题中的程序只要检测到一个敏感词,就会替换然后break出来。因为上一题的需求是检测是否含有敏感词。

这一次的需求是要将敏感词替换。所以要考虑的问题是 ,如果用户的一句话中有多个敏感词呢?
例如:你妈妈在北京是一个公务员
含有三个敏感词。所以针对上面进行修正。
这里的修改需要针对用户输入的那个语句的原处进行修改

小程序来自于

你可能感兴趣的:(python)