1. 程式人生 > >Python小程式練習---敏感詞替換成*星號

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出來。因為上一題的需求是檢測是否含有敏感詞。

這一次的需求是要將敏感詞替換。所以要考慮的問題是 ,如果使用者的一句話中有多個敏感詞呢?
例如:你媽媽在北京是一個公務員
含有三個敏感詞。所以針對上面進行修正。
這裡的修改需要針對使用者輸入的那個語句的原處進行修改