정규 표현식(Regular Expressions) :
복잡한 문자열을 처리할 때 사용하는 기법.
파이썬 포함 문자열을 처리하는 모든 곳에서 사용 (파이썬만의 고유 문법이 아님).
간단히 '정규식'이라고도 부름.
정규 표현식은 왜 필요한가?
다음과 같은 문제 가정
주민등록번호를 포함하고 있는 텍스트가 있다. 이 텍스트에 포함된 모든 주민등록번호의 뒷자리를 * 문자로 변경해 보자. |
정규식을 모를 경우 :
- 전체 텍스트를 공백 문자로 나눈다(split).
- 나뉜 단어가 주민등록번호 형식인지 조사한다.
- 단어가 주민등록번호 형식이라면 뒷자리를 *로 변환한다.
- 나뉜 단어를 다시 조립한다.
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():
word = word[:6] + "-" + "*******"
word_result.append(word)
result.append(" ".join(word_result))
print("\n".join(result))
정규식을 사용할 경우 :
import re
data = """
park 800905-1049118
kim 700905-1059119
"""
pat = re.compile("(\d{6})[-]\d{7}")
print(pat.sub("\g<1>-*******", data))
코드가 휠씬 간편하고 직관적이다.
찾으려는 문자열 또는 바꾸어야 할 문자열의 규칙이 복잡하다면 정규식의 효용은 더 커진다.
'공부 > 파이썬' 카테고리의 다른 글
[점프 투 파이썬] - 파이썬 초보 탈출 (6 ~ 10) (0) | 2023.07.16 |
---|---|
[점프 투 파이썬] - 파이썬 초보 탈출 (1 ~ 5) (0) | 2023.07.14 |
[점프 투 파이썬] - 6장 하위 디렉터리 검색하기 (0) | 2023.07.12 |
[점프 투 파이썬] - 6장 탭을 4개의 공백으로 바꾸기 (0) | 2023.07.12 |
[점프 투 파이썬] - 6장 간단한 메모장 만들기 (0) | 2023.07.12 |