파이썬에서 문자열은 불변(immutable) 객체이기 때문에 특정 위치의 문자를 직접 수정할 수 없습니다. 대신 새로운 문자열을 만드는 방식으로 원하는 문자를 삭제할 수 있습니다. 상황에 따라 유용하게 사용할 수 있는 대표적인 방법들을 소개합니다.
1. 인덱스로 특정 문자 하나만 삭제하기 — 문자열 슬라이싱
문자열에서 특정 인덱스의 문자 하나를 제거하고 싶다면, 슬라이싱(slicing)을 활용해 해당 문자를 건너뛴 새 문자열을 만들면 됩니다.
>>> s = "Hello World" >>> s[:4] + s[5:] 'Hell World'
위 예제에서는 인덱스 4에 있는 문자 'o'가 제거되었습니다. s[:4]는 앞부분을, s[5:]는 해당 문자 다음 부분을 가져와 두 조각을 이어 붙인 것입니다.
2. 특정 문자를 모두 삭제하기 — replace() 메서드
문자열 클래스에는 부분 문자열을 치환하는 replace() 메서드가 내장되어 있습니다. 삭제하고 싶은 문자를 빈 문자열("")로 교체하면, 해당 문자가 모두 제거된 결과를 얻을 수 있습니다.
>>> "Hello people".replace("e", "")
'Hllo popl'
이 방법은 코드가 간결하고 직관적이라 가장 널리 사용됩니다. 단, 대소문자를 구분한다는 점은 참고하세요.
3. 여러 문자를 한 번에 삭제하기 — 정규식(re.sub)
한 줄의 코드로 여러 종류의 문자를 동시에 제거해야 한다면 정규 표현식(regular expression)을 사용하는 것이 가장 효율적입니다. re 모듈의 re.sub() 함수를 활용하면 됩니다.
>>> import re
>>> re.sub("e|l", "", "Hello people")
'Ho pop'
여기서는 "e|l"처럼 파이프(|) 기호로 여러 문자를 구분하여 패턴을 지정했습니다. 이렇게 하면 'e'와 'l'이 모두 빈 문자열로 치환됩니다.
참고: 문자 그룹([]) 활용
정규식에서는 대괄호 []를 사용해 문자 그룹을 만들 수도 있습니다. 예를 들어 re.sub("[el]", "", "Hello people")처럼 작성하면 위 예제와 동일한 결과를 얻을 수 있으며, 삭제할 문자가 많아질 때 패턴을 더 깔끔하게 관리할 수 있습니다.
정리
- 특정 인덱스의 문자 하나 삭제 → 슬라이싱 (
s[:i] + s[i+1:]) - 특정 문자 전체 삭제 →
str.replace() - 여러 문자 동시 삭제 →
re.sub()정규식
상황에 맞는 방법을 선택하면 간결하고 가독성 높은 코드를 작성할 수 있습니다.