Nettoyage incroyablement rapide des gros mots (et leur langage) dans les chaînes
Il existe actuellement un problème de performances avec la dernière version (0.7.0). Il est recommandé d'utiliser la dernière version stable 0.6.1.
Inspirée des grossièretés de paquet de Ben Friedland, cette bibliothèque est nettement plus rapide que celle d'origine, en utilisant la comparaison de chaînes au lieu de l'expression régulière.
Il prend en charge les orthographes modifiées (telles que p0rn
, h4NDjob
, handj0b
et b*tCh
).
Ce package fonctionne avec Python 3.5+
et PyPy3
.
pip3 install better_profanity
Seuls les caractères Unicode des catégories Ll
, Lu
, Mc
et Mn
sont ajoutés. Pour en savoir plus sur les catégories Unicode, cliquez ici.
Toutes les langues ne sont pas encore prises en charge, comme le chinois .
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 ****.
Toutes les orthographes modifiées des mots dans profanity_wordlist.txt seront générées. Par exemple, le mot handjob
serait chargé dans :
'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'
Le mappage complet de la bibliothèque peut être trouvé dans profanity.py.
Par défaut, profanity
remplacent chaque gros mot par 4 astérisques ****
.
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text )
print ( censored_text )
# You **** of ****.
La fonction .censor()
masque également les mots séparés non seulement par un espace vide
mais aussi d'autres diviseurs, tels que _
, ,
et .
. Sauf pour @, $, *, ", '
.
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 instances du caractère du deuxième paramètre dans .censor()
seront utilisées pour remplacer les gros mots.
from better_profanity import profanity
if __name__ == "__main__" :
text = "You p1ec3 of sHit."
censored_text = profanity . censor ( text , '-' )
print ( censored_text )
# You ---- of ----.
La fonction .contains_profanity()
renvoie True
si l'un des mots de la chaîne donnée contient un mot existant dans la liste de mots.
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 fonction load_censor_words
prend une List
de chaînes comme mots censurés. La liste fournie remplacera la liste de mots par défaut.
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 fonction `load_censor_words_from_file prend un nom de fichier, qui est un fichier texte et chaque mot est séparé par des lignes.
from better_profanity import profanity
if __name__ == "__main__" :
profanity . load_censor_words_from_file ( '/path/to/my/project/my_wordlist.txt' )
Les fonctions load_censor_words
et load_censor_words_from_file
prennent un argument de mot-clé whitelist_words
pour ignorer les mots d'une liste de mots.
Il est préférable de l'utiliser lorsqu'il n'y a que quelques mots que vous souhaitez ignorer dans la liste de mots.
# 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
, et par conséquent, il ne sera pas filtré. Ce problème a été soulevé au n°5. python3 tests.py
Veuillez lire CONTRIBUTING.md pour plus de détails sur notre code de conduite et le processus de soumission de demandes de tirage.
Ce projet est sous licence MIT - voir le fichier LICENSE.md pour plus de détails