본문 바로가기
Python

[Python] 정규 표현식(1)

by 찬'story 2021. 6. 29.

정규 표현식(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