정규 표현식(Regular Expressions)은 복잡한 문자열을 처리할 떄 사용하는 기법이다.
정규방정식이 왜 필요할까?
다음 문제를 보며 필요성을 느껴보자.
주민등록번호를 포함하고 있는 텍스트가 있다. 이 텍스트에 포함된 모든 주민등록번호의 뒷자리를 *문자로 변경해 보자.
981118-1122334
정석적인 방법은
1. 전체 텍스트를 공백 문자로 나눈다(split).
2. 나뉜 단어가 주민등록번호 형식인지 조사한다.
3. 단어가 주민등록번호 형식이라면 뒷자리를 *로 변환한다.
4. 나뉜 단어를 다시 조립한다.
data = """
park 800905-1049118
kim 700905-1059119
"""
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(): #0~5, 7~이 숫자
word = word[:6] + "-" + "*******"
word_result.append(word)
result.append(" ".join(word_result)) #나눈 단어 조립하기
print("\n".join(result))
#결괏값
park 800905-*******
kim 700905-*******
반편, 정규식을 사용하면 다음처럼 훨씬 간편하고 직관적인 코드를 작성할 수 있다.
import re
data = """
park 800905-1049118
kim 700905-1059119
"""
pat = re.compile("(\d{6})[-]\d{7}")
print(pat.sub("\g<1>-*******", data))
#결괏값
park 800905-*******
kim 700905-*******
다음 포스팅에서 정규 표현식의 구체적인 내용을 다루어 보겠다.
'Python' 카테고리의 다른 글
Jupyter Notebook과 Git 연동 (0) | 2022.07.01 |
---|---|
[Python] 날짜 처리 방식 (0) | 2021.07.17 |
[Python] 정규 표현식(3) (0) | 2021.07.08 |
[Python] 정규 표현식(2) (0) | 2021.07.08 |
백준 온라인 저지(Baekjoon Online Judge) (0) | 2021.06.26 |