정규 표현식 - 문자열 패턴을 찾아서 대체하기 위한 규칙의 모음
예를 들어 '2023'을 '23'으로 바꿀 때 replace() 메서드를 사용한다.
replace() 메서드를 사용하면 '2023'은 '23'으로 잘 바뀌지만 연도가 다르면 바뀌지 않는다.
'2018'은 '18'로 바뀌지 않는다는 뜻이다.
# 100, 101번째 행을 네 자리 년도 2021을 두 자리 년도 21로 변경
ns_book4.replace({'발행년도' : {'2021' , '21'}})[100:102]
replace() 메서드에 '2018'을 '18'로 바꾸도록 일일이 추가해 줄 수는 있다. 하지만 어떤 수가 있는지 모르고 일일이 하기에는 너무 번거롭기 때문에 정규표현식을 사용하게 된다.
그렇다면 정규 표현식은 어떤 방식으로 표현되고, 사용할까?
1. 숫자 찾기
정규표현식에서 숫자를 나타내는 기호는 \d이다.
표현식을 그룹으로 묶을 때는 괄호를 사용한다.
'2021'은 \d\d\d\d 형태가 되는 것이고 \d\d(\d\d)로 작성하게 되면 뒤의 두 자리가 첫 번째 그룹이라는 뜻이다.
그룹을 표현할 때는 \1, \2 이런 식으로 첫 번째 그룹, 두 번째 그룹을 표현한다.
표현할 때 꼭 정규표현식이라는 것을 알리기 위해 r표시를 앞에 붙여준다.
매개변수로는 regex를 사용하는데 정규표현식을 사용한다라는 것을 의미하므로 True로 해주면 된다.
# 정규표현식을 사용하여 네 자리 연도를 두 자리 연도로 변경
ns_book4.replace({'발행년도' : {r'\d\d(\d\d)' : r'\1'}}, regex = True)[100:102]
정규표현식이 반복될 때는 중괄호를 사용하여 개수를 지정해 줄 수 있다. 앞의 코드를 중괄호를 이용하여 다시 써보면
# 중괄호 활용하여 위의 코드를 다시 작성
ns_book4.replace({'발행년도' : {r'\d{2}(\d{2})' : r'\1'}}, regex = True)[100:102]
다음과 같이 작성할 수 있다. \d\d가 \d {2}와 같은 것이다.
문자를 찾는 방법은 다음 장에서 공부해 보자.
출처 : 혼자 공부하는 데이터분석 with 파이썬 - 한빛미디어