Limpieza increíblemente rápida de malas palabras (y sus leetspeak) en cuerdas
Actualmente hay un problema de rendimiento con la última versión (0.7.0). Se recomienda utilizar la última versión estable 0.6.1.
Inspirada en el paquete de malas palabras de Ben Friedland, esta biblioteca es significativamente más rápida que la original, ya que utiliza comparación de cadenas en lugar de expresiones regulares.
Admite ortografía modificada (como p0rn
, h4NDjob
, handj0b
y b*tCh
).
Este paquete funciona con Python 3.5+
y PyPy3
.
pip3 install better_profanity
Solo se agregan caracteres Unicode de las categorías Ll
, Lu
, Mc
y Mn
. Puede encontrar más información sobre las categorías Unicode aquí.
Aún no se admiten todos los idiomas, como el chino .
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 ****.
Se generarán todas las ortografías modificadas de las palabras en profanity_wordlist.txt. Por ejemplo, la palabra handjob
se cargaría en:
'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'
El mapeo completo de la biblioteca se puede encontrar en profanity.py.
De forma predeterminada, profanity
reemplazan cada mala palabra con 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 ****.
La función .censor()
también oculta palabras separadas no solo por un espacio vacío.
pero también otros divisores, como _
,
y .
. Excepto @, $, *, ", '
.
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"
Se utilizarán 4 instancias del carácter en el segundo parámetro en .censor()
para reemplazar las malas palabras.
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text , '-' )
print ( censored_text )
# You ---- of ----.
La función .contains_profanity()
devuelve True
si alguna palabra en la cadena dada tiene una palabra existente en la lista de palabras.
from better_profanity import profanity
if __name__ == "__main__" :
dirty_text = "That l3sbi4n did a very good H4ndjob."
profanity . contains_profanity ( dirty_text )
# True
List
La función load_censor_words
toma una List
de cadenas como palabras censuradas. La lista proporcionada reemplazará la lista de palabras predeterminada.
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! :)
La función `load_censor_words_from_file toma un nombre de archivo, que es un archivo de texto y cada palabra está separada por líneas.
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' )
Las funciones load_censor_words
y load_censor_words_from_file
toman un argumento de palabra clave whitelist_words
para ignorar palabras en una lista de palabras.
Se utiliza mejor cuando sólo hay unas pocas palabras que le gustaría ignorar en la lista de palabras.
# 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
, y por lo tanto, no se filtrará. Este problema se planteó en el punto 5. python3 tests.py
Lea CONTRIBUTING.md para obtener detalles sobre nuestro código de conducta y el proceso para enviarnos solicitudes de extracción.
Este proyecto tiene la licencia MIT; consulte el archivo LICENSE.md para obtener más detalles.