문자열로 된 욕설(및 해당 단어의 leetspeak)을 엄청나게 빠르게 청소합니다.
현재 최신 버전(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
범주의 유니코드 문자만 추가됩니다. 유니코드 범주에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
중국어 등 모든 언어가 아직 지원되는 것은 아닙니다.
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 파일을 참조하세요.