역시나 지난 글에서 사용했던 데이터를 사용한다.
데이터 내용을 확인해보니 불필요한 특수문자와 특수문자 안의 내용을 지우고 싶은 생각이 들었다.
.replace
를 사용하여 지워보자.
[
지우기result["path"] = result["path"].str.replace(pat=r'[', repl=r'', regex=True)
평범한 기호들은 위 코드로 거의 다 지울 수 있다.
pat = r'['
여기서 [
대신에 다른 특수문자나 글자, 숫자를 넣어 제거할 수 있다.
'
지우기result["path"] = result["path"].str.replace(pat=r'\'', repl=r'', regex=True)
코드에서는 '
가 이미 사용되는 문자이므로 인식하기 힘들다. 이런 문자 앞에는 \
기호를 붙여서 인식하게 해야한다.
result['color']=result['color'].str.replace(r"[a-zA-Z0-9]","")
영어 소문자와 대문자, 숫자를 제거해준다.
여기서 응용으로 영어, 숫자를 제거하고 지우고 싶다면 a앞에 ^를 넣어주면 된다. (여집합 개념인듯)
하나하나 지우자니 불편하고, 전체 특수문자를 지우는 정규식이 있었다.
train["color"] = train["color"].str.replace(pat = r'[^\w]', repl=r'', regex=True)
모든 특수문자가 지워지긴 하나, 외국어의 특수문자는 지워지지 않음
예) 【,】,·
등등
위 코드를 자세히 살펴보면 repl = r''
이 부분이 존재한다. 여기서 ''
안에 원하는 문구를 넣어주면 해당 문구로 대체된다.
예를들어,
result["path"] = result["path"].str.replace(pat=r'[', repl=r'(', regex=True)
이런 코드에서는 [
가 (
로 바뀐다.
(여러분) 안녕하세요
라는 문자열에서 안녕하세요
만 나오게 하는 방법이다.
위에 데이터에서도 아래 몇 항을 보면 괄호 안에 있는 글자들이 있어 같이 지워주고자 한다.
result['color']=result['color'].str.replace(r"\(.*\)","")
여기서 \(.*\)
의 (
와 )
대신 다른 특수문자를 사용하면 해당 특수문자와 안의 내용까지 삭제된다.
전처리 이것저것 해봤는데 수작업이 필수인 것 같긴 하다.