Невероятно быстрая очистка ругательств (и их беглой речи) в строках.
В настоящее время существует проблема с производительностью последней версии (0.7.0). Рекомендуется использовать последнюю стабильную версию 0.6.1.
Вдохновленная ненормативной лексикой Бена Фридланда, эта библиотека работает значительно быстрее исходной, поскольку использует сравнение строк вместо регулярных выражений.
Он поддерживает измененное написание (например, p0rn
, h4NDjob
, handj0b
и b*tCh
).
Этот пакет работает с Python 3.5+
и PyPy3
.
pip3 install better_profanity
Добавляются только символы Юникода из категорий Ll
, Lu
, Mc
и Mn
. Дополнительную информацию о категориях 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"
4 экземпляра символа во втором параметре в .censor()
будут использоваться для замены нецензурных слов.
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.