.replace로 원하는 특수문자와 괄호 안의 내용 지우기

Yelim Kim·2022년 6월 14일
0

Kaggle

목록 보기
29/29

역시나 지난 글에서 사용했던 데이터를 사용한다.

데이터 내용을 확인해보니 불필요한 특수문자와 특수문자 안의 내용을 지우고 싶은 생각이 들었다.
.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"\(.*\)","")

여기서 \(.*\)() 대신 다른 특수문자를 사용하면 해당 특수문자와 안의 내용까지 삭제된다.

전처리 이것저것 해봤는데 수작업이 필수인 것 같긴 하다.

profile
뜬금없지만 세계여행이 꿈입니다.

0개의 댓글