문자열 안에 있는 모든 특수문자 제거하는 방법
1. 문자열 모듈에서 특수문자를 처리를 돕는 메소드
string punctuation
string.punctuation은 모든 구두점을 문자열로 return 해주는 함수다. 데이터 전처리에서 많이 사용되며, 이 메소드를 알지 못했을 때는 특수문자 처리에 번거로운 작업이 필요했다.
함수를 print 했을 때 나오는 아래 결과를 보면 이해하기 쉽다.
from string import punctuation
result = punctuation
print(result)
output
!"#$%&'()*+, -./:;<=>?@[\]^_`{|}~
ex) @와 #을 제외한 모든 특수문자를 문자열에서 제거하고 싶은 경우, 아래와 같이 사용하면 된다.
# @와 #을 제외한 특수문자로 이루어진 문자열 symbols
text = "~!#@!@$%%%@12234234"
symbols = punctuation.replace('@', '').replace('#', '')
for symbol in symbols:
text = text.replace(symbol, '')
2. 문자열 모듈에서 whitespace 처리를 돕는 메소드
string whitespace
string.whitespace로 사용할 수 있으며 space, tab, linefeed, return, formfeed, and vertical tab 과 같은 공백, 줄 바꿈 관련 세트를 return해준다.
punctuation/whitespace 함수를 사용해 문자열을 간단하게 처리하는 예제
넷플릭스 트위터에서, #, @ 를 제외한 문자열 처리하기
아래와 같은 트위터들을 가져와서, preprocessing 하는 방법을 실습해본다.
코드는 아래와 같이, 특수문자와 space를 제외한 공백을 제거한 후 space에 따라 split 했다.
def preprocess(text):
processed_text = []
# @와 #을 제외한 특수문자로 이루어진 문자열 symbols
symbols = punctuation.replace('@', '').replace('#', '')
for symbol in symbols:
text = text.replace(symbol, '')
# space를 제외한 whitespace 제거를 위한 전처리(tab/linefeed/return,..)
spaces = whitespace.replace(' ', '')
for space in spaces:
text = text.replace(space, '')
processed_text = text.split()
return processed_text
output
['나', '이준호', '좋아하네#이상한변호사우영우', '#ExtraordinaryAttorneyWoo', '#강태오', '#KangTaeOh', '#그냥사랑하는사이', '#RainorShine', '#이준호', '@dlwnsghek', '#넷플릭스', '#Netflix', 'pictwittercomgQJP2bNSTG—', 'Netflix', 'Korea|넷플릭스', '코리아', '@NetflixKR', 'July', '30', '2022']
결과가 완벽하진 않지만, 이런 방식으로 preprocessing을 하면 매우 간단하다.