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

Python 문자열에서 특수 문자, 구두점, 공백을 모두 제거하는 방법

Python 문자열에서 특수 문자와 공백 제거하기

문자열에서 모든 특수 문자, 구두점, 공백을 제거하려면 문자열을 순회하면서 알파벳과 숫자(alphanumeric)가 아닌 문자들을 걸러내면 됩니다. 가장 간단한 방법은 isalnum() 메서드를 활용하는 것입니다.

방법 1: isalnum()과 조건식 사용

isalnum()은 해당 문자가 알파벳 또는 숫자인지 판별하는 메서드입니다. 이를 리스트 컴프리헨션(제너레이터 표현식)과 함께 사용하면 알파벳과 숫자만 남길 수 있습니다.

>>> string = "Hello $#! People   Whitespace 7331"
>>> ''.join(e for e in string if e.isalnum())
'HelloPeopleWhitespace7331'

위 코드는 문자열의 각 문자를 하나씩 검사하여 알파벳이나 숫자에 해당하는 문자만 선택한 뒤, join()으로 다시 하나의 문자열로 합칩니다. 그 결과 특수 문자와 공백이 모두 제거된 문자열을 얻을 수 있습니다.

방법 2: 정규표현식(re) 모듈 사용

정규표현식을 활용하는 방법도 있습니다. re.sub(regex, 치환할_문자열, 원본_문자열) 함수를 사용하면 정규식 패턴에 일치하는 모든 문자를 빈 문자열('')로 대체할 수 있습니다.

>>> import re
>>> re.sub('[^A-Za-z0-9]+', '', "Hello $#! People   Whitespace 7331")
'HelloPeopleWhitespace7331'

여기서 사용된 패턴 [^A-Za-z0-9]+는 '알파벳(A-Z, a-z)과 숫자(0-9)를 제외한(^) 모든 문자'를 의미합니다. 따라서 영숫자가 아닌 모든 문자가 빈 문자열로 치환되어 제거됩니다.

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

두 방법 모두 동일한 결과를 반환하지만 상황에 따라 장단점이 있습니다. isalnum() 방식은 코드가 직관적이고 별도의 모듈 임포트가 필요 없다는 장점이 있으며, 유니코드 한글 등 다국어 문자도 자연스럽게 처리할 수 있습니다. 반면 정규표현식 방식은 패턴을 자유롭게 수정할 수 있어, 예를 들어 공백만 제거하고 싶거나 특정 기호는 남기고 싶은 경우처럼 세밀한 제어가 필요할 때 더 유용합니다.