Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 정규식으로 공백·탭·줄바꿈 제거하는 방법

파이썬 정규식(regular expression)을 활용하면 문자열에 포함된 공백, 탭, 줄바꿈 같은 모든 공백 문자를 간단하게 제거할 수 있습니다.

여기서 핵심이 되는 패턴은 \S입니다. \S는 '공백이 아닌 모든 문자(non-whitespace character)'를 의미하며, 그 반대인 \s는 스페이스, 탭(\t), 줄바꿈(\n) 등 모든 공백 문자를 나타냅니다.

예제 1: 공백이 아닌 문자만 추출하기

re.findall() 함수에 \S 패턴을 적용하면, 주어진 문자열에서 공백 문자를 제외한 모든 문자를 리스트 형태로 반환합니다.

import re

result = re.findall(r"\S", """I find
    Tutorialspoint useful""")
print(result)

출력 결과

['I', 'f', 'i', 'n', 'd', 'T', 'u', 't', 'o', 'r', 'i', 'a', 'l', 's', 'p', 'o', 'i', 'n', 't', 'u', 's', 'e', 'f', 'u', 'l']

실행 결과를 보면 공백과 줄바꿈은 모두 걸러지고, 문자열을 구성하는 글자 하나하나가 리스트의 요소로 반환되는 것을 확인할 수 있습니다.

예제 2: 공백이 제거된 문자열 만들기

문자 단위의 리스트가 아니라, 공백이 완전히 제거된 하나의 문자열이 필요하다면 re.sub()를 사용해 공백 문자(\s)를 빈 문자열로 치환하면 됩니다.

import re

text = """I find
    Tutorialspoint useful"""

cleaned = re.sub(r"\s+", "", text)
print(cleaned)

출력 결과

IfindTutorialspointuseful

\s+처럼 '+'를 붙이면 연속된 공백 문자들을 하나의 덩어리로 처리하므로 더 효율적으로 동작합니다.

정리

  • \S: 공백이 아닌 문자를 찾는 패턴
  • \s: 공백, 탭, 줄바꿈 등 모든 공백 문자를 의미하는 패턴
  • re.findall(r"\S", text): 공백을 제외한 문자들을 리스트로 추출
  • re.sub(r"\s+", "", text): 문자열에서 모든 공백을 한 번에 제거