Python에서 부분 문자열의 마지막 등장 인덱스 찾기
Python에는 문자열의 끝에서부터 역방향으로 특정 부분 문자열(substring)이 나타나는 위치를 검색하는 내장 메서드 rfind()가 있습니다. 이 메서드는 부분 문자열을 찾으면 마지막으로 등장한 위치의 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.
>>> 'some of the some'.rfind('some')
12
>>> 'some of the some'.rfind('none')
-1
>>> "NikolaTesla".rfind('kola')
2
위 예제에서 볼 수 있듯이, 'some of the some' 문자열에서 'some'은 두 번 등장하지만 rfind()는 뒤에서부터 검색하기 때문에 마지막 등장 위치인 12를 반환합니다. 반면 존재하지 않는 'none'을 검색하면 -1이 반환됩니다.
rfind() 메서드의 기본 문법
문자열.rfind(찾을_부분_문자열, 시작_인덱스, 끝_인덱스)
- 찾을 부분 문자열: 검색 대상이 되는 문자열입니다. (필수)
- 시작 인덱스 / 끝 인덱스: 선택 사항으로, 지정하면 해당 범위 내에서만 검색을 수행합니다.
검색 범위를 지정한 활용 예제
text = "banana"
print(text.rfind("na")) # 4 → 전체 문자열에서 마지막 'na'의 위치
print(text.rfind("na", 0, 4)) # 2 → 인덱스 0~3 범위 내에서 마지막 'na'의 위치
print(text.rfind("apple")) # -1 → 존재하지 않는 문자열
rindex()와의 차이점
동일한 기능을 제공하는 rindex() 메서드도 있습니다. 두 메서드의 차이는 검색에 실패했을 때의 동작입니다. rfind()는 -1을 반환하여 프로그램이 계속 실행되지만, rindex()는 ValueError 예외를 발생시킵니다.
- 검색 실패 여부를 조건문으로 간단히 확인하고 싶다면 →
rfind() - 부분 문자열이 반드시 존재해야 하며, 없을 경우 오류로 처리해야 한다면 →
rindex()
참고로 앞쪽(왼쪽)에서부터 첫 번째 등장 위치를 찾으려면 find() 또는 index() 메서드를 사용하면 됩니다. 상황에 맞는 메서드를 선택하면 문자열 검색 로직을 더욱 안전하고 효율적으로 작성할 수 있습니다.