미식가의 개발 일기

[머신러닝] 정규 표현식 사용하여 데이터 변환 본문

ML, DL

[머신러닝] 정규 표현식 사용하여 데이터 변환

대체불가 핫걸 2024. 7. 20. 20:13
정규 표현식이란 문자열에서 특정한 패턴을 찾거나 조작하기 위해 사용하는 도구이다.

 

메타 문자

데이터를 검색하고 패턴을 정의하는데 사용되는 정규 표현식 
. 한 개의 문자
^ 문자열의 시작
$ 문자열의 끝
| OR 연산
\ 특수 문자를 일반 문자로 사용하거나 특수 시퀀스를 나타낼 때

 

 

특수 시퀀스

특정 패턴을 간단한 코드로 나타낼 때 사용
\d 모든 숫자
\D 숫자가 아닌 모든 문자(공백 포함)
\s 모든 공백 문자
\S 공백 문자가 아닌 모든 문자(숫자 포함)
\w 모든 단어 문자(알파벳, 숫자, 밑줄)
\W 단어 문자가 아닌 문자(특수 문자 등)

 

 

반복자

특정 문자가 몇 번 반복 되어야 하는지 정의 
  • 바로 앞에 문자 기준
* 0회 이상 반복될 때
+ 1회 이상 반복될 때
? 0회 또는 1회 있을 때
{n} n회 반복될 때
{n, } n회 이상 반복될 때
{n, m} 최소 n회 최대 m회 반복될 때

 

 

추출 예시

날짜 데이터에서 연도, 월, 일 추출
# r: raw string, 특수 시퀀스를 문자 그대로 취급
data_pattern = r'(\d{4})-(\d{2})-(\d{2})'​

 

특정 문자(사과, 바나나)를 포함하는 값 추출
pattern = r'(사과|바나나)'

 

'공백-공백' 형태를 포함한 모든 값 추출
pattern = r'\s-\s.*'

 

 

추출한 값으로 데이터 정제(contains, replace, extract)

추출 결과 Boolean 값으로 출력 
str.contains(pattern)

 

추출 결과값을 다른 값으로 대체
  • 패턴값을 공백으로 대체하기
# regex=True 해당 패턴에서 정규 표현식을 사용한다는 의미
str.replace(pattern, '', regex=True)

 

패턴에 매칭되는 부분을 데이터 프레임으로 표현하기
str.extract(pattern)

 

반응형