Python에서 문자열의 특정 문자 제거하기
Python으로 개발하다 보면 문자열에 포함된 특정 문자를 제거해야 하는 경우가 자주 발생합니다. 이 글에서는 replace() 메서드와 정규표현식을 활용해 문자열에서 원하는 문자를 손쉽게 삭제하는 다양한 방법을 소개합니다.
1. replace() 메서드로 단일 문자 제거
문자열 클래스에는 부분 문자열을 다른 문자열로 교체할 수 있는 replace() 메서드가 내장되어 있습니다. 이 메서드를 사용하면 제거하고 싶은 문자를 빈 문자열("")로 대체하여 사실상 삭제 효과를 얻을 수 있습니다.
>>> "Hello people".replace("e", "")
"Hllo popl"위 예제에서는 문자열 내의 모든 'e'가 빈 문자열로 치환되어 결과적으로 제거된 것을 확인할 수 있습니다.
2. 정규표현식으로 여러 문자 한 번에 제거
여러 개의 문자를 한 줄의 코드로 제거하려면 정규표현식(regular expression)을 사용하는 것이 가장 효율적입니다. re.sub() 함수를 활용하며, 제거할 문자들을 '|' 기호로 구분하여 지정하면 됩니다.
>>> import re
>>> re.sub("e|l", "", "Hello people")
"Ho pop"
re.sub(chars_to_replace, string_to_replace_with, str) 형태로 호출하며, 위 예제에서는 'e'와 'l' 두 문자가 동시에 제거된 결과를 볼 수 있습니다.
3. 리스트에 담긴 문자들을 제거하는 방법
제거하려는 문자들이 이미 리스트 형태로 준비되어 있다면, join() 메서드를 활용해 해당 리스트를 정규표현식 패턴으로 변환할 수 있습니다.
>>> import re
>>> char_list = ['a', 'e', 'i', 'o', 'u']
>>> re.sub("|".join(char_list), "", "Hello people")
"Hll ppl"
위 예제에서는 모음 리스트를 '|'로 연결해 하나의 패턴을 만든 뒤, 문자열에서 모든 모음을 한 번에 제거했습니다.
참고: 문자 그룹([]) 활용하기
정규표현식에서는 대괄호 []를 사용해 문자 그룹을 만들 수도 있습니다. 예를 들어 re.sub("[aeiou]", "", "Hello people")처럼 작성하면 대괄호 안에 포함된 어떤 문자와 일치하더라도 모두 치환되므로, '|'로 연결하는 것보다 더 간결하게 표현할 수 있습니다.