티스토리 뷰

반응형

정규 표현식이라고 들어봤는가? 복작한 문자열을 처리할때 사용하는 기법으로 , 파이썬에서만 사용하는 고유문법이 아니라 문자열을 처리하는  모든 곳에서 사용한다. 정규 표현식을 줄여서 <정규식>이라고 말한다.

정규 표현식은 왜 필요할까?

회원들의 주민번호를 관리하는데 주민번호 뒷자리를 * 문자로 변경을 해야한다고 가정을 해보자. 

우리가 정규식을 모른다면 숫자+하이프(-)+숫자로 되어 있는 텍스트를 주민번호 뒷자리만 *문자로 바꾸려면 아래와 같이 작성을 해야할것이다.

1.전체 텍스트를 공백 문자로 나눈다(split)

2.나뉜 단어가 주민번호형식 인지 확인한다.

3.단어가 주민등록번호 형식이라면 뒷자리를 *로 변환한다.

4.나뉜 단어를 다시 조립한다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
data = """
kim 880102-1768451
park 991207-2657452
"""
 
result = []
for line in data.split("\n"):
    word_result = []
    for word in line.split(" "):
        if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit():
            word = word[:6+ "-" + "*******"
        word_result.append(word)
    result.append(" ".join(word_result))
print("\n".join(result))
cs
1
2
3
결과값:
kim 880102-*******
park 991207-*******
cs

반면에 정규식을 사용하면 아래와 같이 훨씬 간편하고 직관적인 코드를 작성할수 있다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re 
 
data = """
park 880102-1049118
kim  991207-1059119
"""
 
pat = re.compile("(\d{6})[-]\d{7}")
print(pat.sub("\g<1>-*******", data))
 
결과값:
kim 880102-*******
park 991207-*******
 
cs


반응형
댓글