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

파이썬(Python) 문자열에서 구두점 제거하는 방법 총정리

파이썬에서 문자열에 포함된 구두점(마침표, 물음표, 쉼표 등)을 제거해야 하는 경우가 자주 있습니다. 텍스트 전처리나 데이터 정제 작업에서 특히 유용한데요. 이 글에서는 대표적인 세 가지 방법을 예제 코드와 함께 소개합니다.

1. str.translate() – 가장 빠른 방법

모든 구두점을 제거하는 가장 빠르고 효율적인 방법은 str.translate() 메서드를 사용하는 것입니다. 파이썬 3에서는 string.punctuationstr.maketrans()를 함께 사용하면 됩니다.

예제

import string

s = "string. With. Punctuation?"
result = s.translate(str.maketrans('', '', string.punctuation))
print(result)

출력 결과

string With Punctuation

str.maketrans('', '', string.punctuation)는 삭제할 문자 목록을 매핑 테이블로 만들어 주고, translate()가 이 테이블을 기반으로 해당 문자들을 한 번에 제거합니다. 내부적으로 C 수준에서 처리되기 때문에 대용량 텍스트에서도 성능이 뛰어납니다.

2. 반복문과 집합(set) 활용 – 가장 읽기 쉬운 방법

코드의 가독성을 우선한다면, 구두점 문자들을 집합(set)으로 만들어 두고 반복문에서 해당 문자들을 건너뛰는 방식도 좋습니다.

예제

import string

s = "string. With. Punctuation?"
exclude = set(string.punctuation)
s = ''.join(ch for ch in s if ch not in exclude)
print(s)

출력 결과

string With Punctuation

집합의 멤버십 검사는 평균적으로 O(1)이므로 문자별 검사 속도도 빠릅니다. 다만 문자 하나하나를 순회하기 때문에 translate()보다는 다소 느립니다.

3. 정규표현식(re) 활용 – 유연한 패턴 처리

제거할 문자를 직접 지정하지 않고 패턴 기반으로 처리하고 싶다면 re 모듈을 사용할 수 있습니다.

예제

import re

s = "string. With. Punctuation?"
result = re.sub(r'[^\w\s]', '', s)
print(result)

출력 결과

string With Punctuation

정규식 방식은 알파벳·숫자·공백 외의 모든 문자를 제거하므로, 구두점뿐 아니라 특수 기호까지 한 번에 정리할 때 유용합니다.

어떤 방법을 선택해야 할까?

  • 속도가 중요하다면str.translate()
  • 가독성이 중요하다면 → 반복문 + 집합 방식
  • 복잡한 패턴 처리가 필요하다면 → 정규표현식(re.sub)

상황에 맞는 방법을 선택하면 텍스트 정제 작업을 더욱 효율적으로 처리할 수 있습니다.