Replace 특수문자 제거 - Replace teugsumunja jegeo

자바스크립트는 RexEx 정규식을 사용해서 불필요한 문자를 제거할 수 있습니다
정규식은 /[정규식으로 제거할 패턴]/gim 방식으로 선언합니다
gim (replaceAll) : 전역적으로 문자열에 포함된 같은 패턴의 문자를 모두 제거하기 위해서 사용합니다
replace 를 사용해서 특정 패턴 문자 인 경우 해당 문자를 삭제합니다

정규식 패턴

  • [a-z] : 영어 소문자 지정
  • [A-Z] : 영어 대문자 지정
  • [ㄱ-ㅎㅏ-ㅣ가-힣] : 한글 지정
  • [.,!?] : 허용하고자하는 특수문자 지정

정규식 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


let reg = /[0-9 ]/gim;


let reg = /[a-zA-Z ]/gim;


let reg = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/ ]/gim;


let reg = /[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gim;


let reg = /[`~!@#$%^&*()_|+\-=?;:'"<>\{\}\[\]\\\/ ]/gim;


let resultData = originalData.replace(reg, "");

자바스크립트의 replace 메서드를 사용하여 특정 문자열을 제거해보자.

목차

  1. 특정 문자열 하나만 제거
  2. 특정 문자열 모두 제거

1. 특정 문자열 하나만 제거

replace 메서드를 사용하면, 특정 문자열의 첫 번째로 발견된 것만 삭제된다.

1

2

3

4

5

6

let myStr = "Hello! World!"

myStr = myStr.replace("!""");

console.log(myStr); // Hello World!

Colored by Color Scripter

cs

2. 특정 문자열 모두 제거

특정 문자열을 모두 찾아서 모두 제거하고 싶다면 정규표현식을 사용하면 된다.

1

2

3

4

5

6

let myStr = "Hello! World!"

myStr = myStr.replace(/\!/g, "");

console.log(myStr); // Hello World

Colored by Color Scripter

cs

정규표현식에서 -g는 문자열 내에 특정 문자열을 모두 소환하는 역할을 한다.

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

Replace 특수문자 제거 - Replace teugsumunja jegeo

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

이런 코드에서는 [(로 바뀐다.

괄호 안의 문자 싹 지우기

(여러분) 안녕하세요라는 문자열에서 안녕하세요만 나오게 하는 방법이다.
위에 데이터에서도 아래 몇 항을 보면 괄호 안에 있는 글자들이 있어 같이 지워주고자 한다.

Replace 특수문자 제거 - Replace teugsumunja jegeo

result['color']=result['color'].str.replace(r"\(.*\)","")

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

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