極其快速地清理字串中的髒話(及其利茲語)
目前最新版本(0.7.0)有效能問題。建議使用最新穩定版本0.6.1。
受到 Ben Friedland 的軟體包髒話的啟發,該庫通過使用字串比較而不是正則表達式,比原始庫要快得多。
它支援修改的拼字(例如p0rn
、 h4NDjob
、 handj0b
和b*tCh
)。
此軟體包適用於Python 3.5+
和PyPy3
。
pip3 install better_profanity
僅新增類別Ll
、 Lu
、 Mc
和Mn
中的 Unicode 字元。有關 Unicode 類別的更多資訊可以在此處找到。
尚不支援所有語言,例如中文。
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words ()
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
將產生 profanity_wordlist.txt 中單字的所有修改拼字。例如,單字handjob
將被載入到:
'handjob' , 'handj*b' , 'handj0b' , 'handj@b' , 'h@ndjob' , 'h@ndj*b' , 'h@ndj0b' , 'h@ndj@b' ,
'h*ndjob' , 'h*ndj*b' , 'h*ndj0b' , 'h*ndj@b' , 'h4ndjob' , 'h4ndj*b' , 'h4ndj0b' , 'h4ndj@b'
該庫的完整映射可以在 profanity.py 中找到。
預設情況下, profanity
會用 4 個星號****
取代每個髒話。
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
函數.censor()
還隱藏不只是由空格分隔的單字
還有其他分隔符,例如_
,
和.
。 @, $, *, ", '
除外。
from better_profanity import profanity
if __name__ == "__main__" :
text = "...sh1t...hello_cat_fuck,,,,123"
censored_text = profanity . censor ( text )
print ( censored_text )
# "...****...hello_cat_****,,,,123"
.censor()
中第二個參數中的字元的 4 個實例將用於取代髒話。
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text , '-' )
print ( censored_text )
# You ---- of ----.
如果給定字串中的任何單字在單字清單中存在,則函數.contains_profanity()
傳回True
。
from better_profanity import profanity
if __name__ == "__main__" :
dirty_text = "That l3sbi4n did a very good H4ndjob."
profanity . contains_profanity ( dirty_text )
# True
List
單字列表函數load_censor_words
將字串List
作為審查詞。提供的清單將替換預設的單字清單。
from better_profanity import profanity
if __name__ == "__main__" :
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . load_censor_words ( custom_badwords )
print ( profanity . contains_profanity ( "Have a merry day! :)" ))
# Have a **** day! :)
函數「load_censor_words_from_file」接受一個檔案名,該檔案是一個文字文件,每個單字由行分隔。
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' )
函數load_censor_words
和load_censor_words_from_file
採用關鍵字參數whitelist_words
來忽略單字清單中的單字。
當您想在單字清單中忽略幾個單字時,最好使用它。
# Use the default wordlist
profanity . load_censor_words ( whitelist_words = [ 'happy' , 'merry' ])
# or with your custom words as a List
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . load_censor_words ( custom_badwords , whitelist_words = [ 'merry' ])
# or with your custom words as a text file
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' , whitelist_words = [ 'merry' ])
from better_profanity import profanity
if __name__ == "__main__" :
custom_badwords = [ 'happy' , 'jolly' , 'merry' ]
profanity . add_censor_words ( custom_badwords )
print ( profanity . contains_profanity ( "Happy you, fuck!" ))
# **** you, ****!
profanity . censor ( 'I just have sexx' )
# returns 'I just have sexx'
profanity . censor ( 'jerkk off' )
# returns 'jerkk off'
s & m
,因此不會被過濾掉。這個問題在#5 中提出。 python3 tests.py
請閱讀 CONTRIBUTING.md 以了解有關我們的行為準則以及向我們提交拉取請求的流程的詳細資訊。
該項目已獲得 MIT 許可證 - 有關詳細信息,請參閱 LICENSE.md 文件