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() 방식은 코드가 직관적이고 별도의 모듈 임포트가 필요 없다는 장점이 있으며, 유니코드 한글 등 다국어 문자도 자연스럽게 처리할 수 있습니다. 반면 정규표현식 방식은 패턴을 자유롭게 수정할 수 있어, 예를 들어 공백만 제거하고 싶거나 특정 기호는 남기고 싶은 경우처럼 세밀한 제어가 필요할 때 더 유용합니다.