작은 정리 패턴을 조합해
텍스트 정규화는 짧은 정규식 여러 개를 순서대로 적용하기 좋은 영역이야. 각 단계가 어떤 문자를 없애거나 바꾸는지 분명히 하고 원본을 보존한 채 결과를 비교해.
연속 공백 줄이기
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)는 카드 번호 모양을 가려. 이 패턴이 실제 민감 정보의 모든 형식을 찾는다고 가정하지 말고, 데이터 정책에 맞는 탐지와 마스킹 절차를 함께 사용해.
제목을 슬러그로 바꾸기
영문 제목이라면 소문자로 바꾸고, 영숫자가 아닌 구간을 하이픈으로 치환한 뒤, 양끝 하이픈을 제거하는 작은 단계로 나눌 수 있어.