[python] 문자열에 특정 단어가 몇 번 들어가는지 세기 (+스팸 메일 체크)

코딩/python|2020. 8. 28. 18:30

성인 포르토 사이트를 홍보하려는 이메일에는 sex, sexy, cute, girl, girls 등의 단어가 많이 출현할 것 같습니다. (사실 요즘은 스팸 메일을 보내는 사람들이 더 정교해져서 이렇게 허술하진 않겠지만요^^;) sex, sexy, cute, girl, girls과 같은 단어들이 문장 내에서 총 3번 이상 출현하면 스팸메일로 지정하는 코드를 만들어보도록 하겠습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
email = list(input("문자열을 입력하세요>").split(" "))
 
cnt = 0
for word in email:
    if word.strip(".,"== "sex" or word.strip(".,"== "sexy" or word.strip(".,"== "girl" or word.strip(".,"== "girls" or word.strip(".,"== "cute":
        cnt += 1
 
print()
if cnt >= 3:
    print(f"유해 단어 {cnt}회 출현! 스팸메일입니다. ")
else:
    print(f"유해 단어 {cnt}회 출현! 스팸메일이 아닙니다. ")
print()
cs

 

한번 위 코드가 스팸메일을 잘 찾아내는지 한번 테스트해보겠습니다. 

 

 

 

첫번째 문자열의 경우 위험 단어인 girl, sexy, girls가 각각 한번씩 출현했습니다. 총 3개의 유해 단어가 감지되었기 때문에 스팸메일로 분류되었습니다. 반면 두번째 문자열에는 단 하나의 유해 단어도 발견되지 않았기 때문에 스팸메일로 구분하지 않았습니다.  

 

실제로 스팸 메일을 찾아내는 알고리즘은 이것보다 훨씬 복잡하고 정교하겠지만, 기본 원리는 비슷하지 않을까요? ㅎㅎ