极其快速地清理字符串中的脏话(及其利兹语)
目前最新版本(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 文件