본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 33. Make words counters - 2 ( words counter 만들기)


이전까지는 웹페이지에서 특정 부분을 크롤링하여 단어들을 추출하였습니다. 그러나 여기에는 특수문자 등 원하지 않는 부분도 포함되어 있었습니다. 이번 시간에는 앞에서 얻은 자료에서 원치않는 부분을 제거하는 코딩을 하도록 하겠습니다.

앞 장에서 다룬 코드는 아래와 같습니다.

상기 코드에서 우선 확인을 위해 삽입한 print(each_word)를 삭제하도록 하겠습니다.

또 다른 함수를 정의할 건데 start(url) 함수 내에서 호출 하도록 할 예정입니다. 그래서 아래 코드에서 처럼 clean_up_list(word_list) 문구를 삽입하였습니다.

clean_up_list(word_list) 함수를 정의하겠습니다.

start(url) 함수와 마찬가지로 원하지 않는 데이터를 뺸 자료를 담을 그릇(리스트)에 해당하는 clean_word_list 를 선언해 줍니다.

start(url)에서 전달받은 word_list(특수문자를 포함하고 있는 단어 리스트)에서 각각의 단어를 word로 임의로 지정하여 반복문을 돌리겠습니다.

그리고 제거할 특수문자를 모두 포함할 변수 symbols 에 키보드에 있는 모든 특수문자를 넣어 줍니다. 여기서 조심해야 할 점은 이스케이핑(Escaping)을 해주어야 하는 것입니다.

전체 symbols 의 길이까지 하나씩 반복문을 돌려줍니다. 이는 첫번째 특수문자, 두번째 특수문자, ..... 마지막 특수문자까지 비교하여 단어내에 특수문자가 존재하는지 확인하기 위한 과정입니다.

특수문자가 있는 단어에 symbols 의 값중 하나가 존재하면 공백("")으로 대체하겠다는 코드입니다. 

특수문자로만 된 단어가 존재할 수도 있는데, 가령 :) 와 같은 이모티콘, .... 와 같은 말줄임표를 공백으로 대체해 버리면 아무것도 남지않는 상태가 됩니다. 이러한 부분이 clean_word_list에 포함되는 것을 미연에 방지하기 위해 대체된 단어의 길이가 0보다 클 경우에만 clean_word_list 에 넣게 하겠습니다.

확인을 위해 프린트를 넣어 주었습니다.

특수문자가 제거된 단어의 길이가 0 보다 클 경우에 clean_word_list 에 첨부해 줍니다.

여기까지 마무리가 되었다면, 실행을 해 보겠습니다. 앞장의 코드에서는 특수문자가 포함이 되었는데, 아래 그림의 결과창에서는 특수문자가 제거된 단어들만 깨끗하게 추출된 모습을 확인할 수 있습니다.

다음 시간에는 상기의 단어들이 얼마나 많은 빈도로 사용되었는지, 빈도수를 측정(계산)하는 코드를 살펴보도록 하겠습니다. 이를 통해 다양하게 활용할 수 있는 점을 다루어 보도록 할 예정입니다.