파이썬 정규표현식으로 공백 정리하기: 데이터 손실을 막는 예제
정규표현식으로 텍스트를 정리할 때는 제거할 문자를 정하기 전에 보존해야 할 정보를 먼저 정해야 합니다. 숫자, 한글, 영문만 남기는 규칙은 소수점·음수 부호·날짜 구분자까지 지울 수 있습니다.
모든 특수문자를 지우면 생기는 문제
-12.5%에서 기호를 전부 지우면 125가 됩니다. 원래 의미가 달라지는 것입니다. 가격, 전화번호, URL, 식별번호는 서로 다른 처리 규칙이 필요합니다. HTML 태그 제거도 정규표현식 하나에 맡기기보다 HTML 파서를 사용하는 편이 적합합니다.
공백과 설명 문구만 정리하는 예제
다음 코드는 Python 3 표준 라이브러리만 사용합니다. 범용 정제가 아닌, 상품 설명 문구의 공백을 합치고 제어 문자를 제거하는 예제입니다.
import re
raw = " 월간\t보고서\n매출: -12.5%\x00 "
without_controls = re.sub(r"[\x00-\x08\x0b\x0c\x0e-\x1f]", "", raw)
clean = re.sub(r"\s+", " ", without_controls).strip()
assert clean == "월간 보고서 매출: -12.5%"
print(clean)
줄바꿈과 탭은 한 칸 공백으로 바뀌고 소수점·마이너스·퍼센트 기호는 보존됩니다. 여러 줄을 유지해야 하는 문서라면 \s+로 합치는 규칙을 그대로 쓰면 안 됩니다. 수평 공백만 정리하는 등 문서 목적에 맞게 범위를 좁히세요.
숫자를 추출할 때의 경계
text = "증감률 -12.5%, 목표 3.0%"
numbers = re.findall(r"[-+]?\d+(?:\.\d+)?", text)
assert numbers == ["-12.5", "3.0"]
print(numbers)
위 패턴은 예제의 소수 표기만 다룹니다. 천 단위 쉼표, 지수 표기, 국가별 소수 구분자를 모두 처리하는 숫자 파서는 아닙니다. 추출한 문자열을 금액으로 사용할 때는 통화 단위와 반올림 규칙도 따로 정해야 합니다.
정규식이 맞는지 확인하는 방법
정상 예뿐 아니라 빈 문자열, 한글 혼합, 줄바꿈, 음수, 특수 기호가 포함된 입력을 함께 테스트하세요. 원문과 정제문을 별도 열로 보존하면 데이터 손실을 확인할 수 있습니다. 처리 속도는 입력 길이와 패턴에 따라 달라지므로 측정 없는 향상률은 제시할 수 없습니다.
공식 자료: Python re 문서. 관련 글: HTML에서 텍스트 추출, JSON 구조 검증, 데이터 처리 가이드.
작성: 로그 · 2026-10-17 수정: 손실 없는 정제 예제와 경계 조건을 추가하고 성능 과장 표현을 제거했습니다.
댓글
댓글 쓰기