Limpeza extremamente rápida de palavrões (e seu leetspeak) em strings
Atualmente há um problema de desempenho com a versão mais recente (0.7.0). Recomenda-se usar a última versão estável 0.6.1.
Inspirada nos palavrões de pacotes de Ben Friedland, esta biblioteca é significativamente mais rápida que a original, usando comparação de strings em vez de regex.
Ele suporta grafias modificadas (como p0rn
, h4NDjob
, handj0b
e b*tCh
).
Este pacote funciona com Python 3.5+
e PyPy3
.
pip3 install better_profanity
Somente caracteres Unicode das categorias Ll
, Lu
, Mc
e Mn
são adicionados. Mais informações sobre categorias Unicode podem ser encontradas aqui.
Nem todos os idiomas são suportados ainda, como o chinês .
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 ****.
Todas as grafias modificadas das palavras em profanity_wordlist.txt serão geradas. Por exemplo, a palavra handjob
seria carregada em:
'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'
O mapeamento completo da biblioteca pode ser encontrado em profanity.py.
Por padrão, profanity
substituem cada palavrão por 4 asteriscos ****
.
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
A função .censor()
também oculta palavras separadas não apenas por um espaço vazio
mas também outros divisores, como _
, ,
e .
. Exceto @, $, *, ", '
.
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 instâncias do caractere no segundo parâmetro em .censor()
serão usadas para substituir os palavrões.
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text , '-' )
print ( censored_text )
# You ---- of ----.
A função .contains_profanity()
retorna True
se alguma palavra na string fornecida tiver uma palavra existente na lista de palavras.
from better_profanity import profanity
if __name__ == "__main__" :
dirty_text = "That l3sbi4n did a very good H4ndjob."
profanity . contains_profanity ( dirty_text )
# True
List
A função load_censor_words
usa uma List
de strings como palavras censuradas. A lista fornecida substituirá a lista de palavras padrão.
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! :)
A função `load_censor_words_from_file leva um nome de arquivo, que é um arquivo de texto e cada palavra é separada por linhas.
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' )
As funções load_censor_words
e load_censor_words_from_file
usam um argumento de palavra-chave whitelist_words
para ignorar palavras em uma lista de palavras.
É melhor usado quando há apenas algumas palavras que você gostaria de ignorar na lista de palavras.
# 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
, portanto, não será filtrada. Este problema foi levantado no item 5. python3 tests.py
Leia CONTRIBUTING.md para obter detalhes sobre nosso código de conduta e o processo de envio de pull requests para nós.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes