반전공자

[Python] 정규표현식 본문

데이터분석

[Python] 정규표현식

하연01 2023. 3. 17. 12:33

하나의 문자열에서 원하는 부분만 추출하고 싶다면?


패키지

import re

 

정규표현식을 위한 패키지는 re 한개 임포트~

 

re. 함수 설명

- re.match(패턴, 문자열) : 문자열 처음부터 패턴 찾기

- re.search(패턴, 문자열) : 중간에 있어도 무관

- re.findall(패턴, 문자열) : 일치하는 모든 문자열 추출

 

 

샘플 데이터

sample data

대략 이렇게 생긴 문자열에서 원하는 데이터를 추출해보자.

하나의 문자열에 평점, 구매처, 아이디, 날짜가 다 붙어있다. 

 

이런 머리아픈 상황에선 정규표현식이 제격이겠죠?

 

일단 가장 뒤에 붙어있는 날짜를 떼어보자. 

 

 

 

 

날짜 추출

 

맨 위에서 본 샘플과 달리 136번 데이터는 날짜 뒤에도 텍스트가 붙어있다. 

모든 데이터가 가장 뒤에 날짜만 있었다면 인덱스 슬라이싱으로 추출 가능하겠지만, 이런 경우가 있으니 정규표현식이 필수..

 

 

 

패턴 지정

원하는 데이터의 형식 : yy.mm.dd.

pattern = "([0-9]+.)\s*([0-9]+.)\s*([0-9]+.)"
pattern = "([\d\d]+).([\d\d]+).([\d\d]+)"

형식에 맞게 패턴을 지정한다.

위 두개 패턴은 동일한 결과를 반환한다.

 

참고

숫자 : 0-9

영어 소문자 : a-z

영어 대문자 : A-Z

한글 : 가-힣

 

 

 

테스트로 가장 첫번째 데이터를 넣어본다.

a = re.search(pattern, str(df['date'][0]))
print(a.group())

정규표현식 적용 결과 a.group()

 

원본 데이터 : '평점5인터파크쇼핑k*b*****20.09.23.'

 

 

 

그렇다면 날짜가 중간에 껴있는 경우에도 잘 나올까? 

 

원하는 문자열이 중간에 있을 때도 잘 작동함

 

 

원하는대로 문자열이 잘 추출된다.