본문 바로가기
C.W.K.
Stream
Lesson 12 of 12 · published

정리 패턴

~8 min · 정리, normalization

Level 0패턴 호기심
0 XP0/90 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

작은 정리 패턴을 조합해

텍스트 정규화는 짧은 정규식 여러 개를 순서대로 적용하기 좋은 영역이야. 각 단계가 어떤 문자를 없애거나 바꾸는지 분명히 하고 원본을 보존한 채 결과를 비교해.

연속 공백 줄이기

re.sub(r'\s+', ' ', text)는 스페이스, 탭, 줄바꿈이 이어진 구간을 공백 하나로 바꿔. 문단 경계까지 사라지므로 한 줄 텍스트로 만들 때만 사용해.

ASCII 밖의 문자 제거

re.sub(r'[^\x20-\x7E\n]', '', text)는 출력 가능한 ASCII와 줄바꿈만 남겨. 한글과 이모지를 비롯한 다른 유니코드 문자도 모두 지우므로 ASCII 전용 출력이 꼭 필요한 경우에만 사용해.

HTML 태그처럼 보이는 부분 제거하기

re.sub(r'<[^>]+>', '', text)는 꺾쇠 사이를 지우는 느슨한 패턴이야. 통제된 조각에서 빠르게 텍스트를 얻을 때는 쓸 수 있지만 실제 HTML은 전용 파서로 처리해.

각 줄 끝의 공백 제거하기

re.sub(r'[ \t]+$', '', text, flags=re.MULTILINE)는 각 줄 끝에 붙은 스페이스와 탭을 지워.

줄바꿈 통일하기

re.sub(r'\r\n?', '\n', text)는 Windows의 \r\n과 예전 Mac의 \r을 Unix의 \n으로 바꿔.

양끝 따옴표 제거하기

re.sub(r'^["\']+|["\']+$', '', text)는 문자열의 시작과 끝에 붙은 작은따옴표와 큰따옴표를 지워. 내부 따옴표는 그대로 남아.

민감해 보이는 패턴 가리기

re.sub(r'\b\d{4}-\d{4}-\d{4}-\d{4}\b', '****-****-****-****', text)는 카드 번호 모양을 가려. 이 패턴이 실제 민감 정보의 모든 형식을 찾는다고 가정하지 말고, 데이터 정책에 맞는 탐지와 마스킹 절차를 함께 사용해.

제목을 슬러그로 바꾸기

영문 제목이라면 소문자로 바꾸고, 영숫자가 아닌 구간을 하이픈으로 치환한 뒤, 양끝 하이픈을 제거하는 작은 단계로 나눌 수 있어.

Code

정리 패턴·python
import re

# 연속 공백을 하나로 줄이기
re.sub(r'\s+', ' ', 'too\tmany\n\nspaces')
# 'too many spaces'

# 출력할 수 없는 ASCII 문자 제거
re.sub(r'[^\x20-\x7E\n]', '', 'hello\x00world\x07')
# 'helloworld'

# 통제된 조각에서 HTML 태그처럼 보이는 부분 제거
re.sub(r'<[^>]+>', '', '<p>Hello <b>world</b></p>')
# 'Hello world'

# 각 줄 끝의 공백 제거
re.sub(r'[ \t]+$', '', 'line1   \nline2 \t', flags=re.MULTILINE)
# 'line1\nline2'

# 줄바꿈 통일
re.sub(r'\r\n?', '\n', 'win\r\nmac\rmix\n')
# 'win\nmac\nmix\n'

# 카드 번호처럼 보이는 값 가리기
re.sub(r'\b\d{4}-\d{4}-\d{4}-\d{4}\b', '****-****-****-****', 'card 1234-5678-9012-3456')
# 'card ****-****-****-****'

# 영문 제목을 슬러그로 바꾸기
def slugify(text):
    text = text.lower()
    text = re.sub(r'[^a-z0-9]+', '-', text)
    text = re.sub(r'-+', '-', text)
    return text.strip('-')

slugify('Hello, World! Pippa #1')
# 'hello-world-pippa-1'

External links

Exercise

공백, 제어 문자, 서로 다른 줄바꿈이 섞인 텍스트 파일을 하나 골라 정리 패턴 서너 개를 순서대로 적용해 봐. 각 단계의 적용 전후를 비교하고, 보존해야 할 문자까지 지워지지 않았는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.