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

파이썬 문자열 rindex() 메서드 완벽 가이드

이 튜토리얼에서는 파이썬 문자열 메서드 중 하나인 rindex()에 대해 자세히 알아보겠습니다.

rindex() 메서드란?

rindex()는 문자열에서 지정한 부분 문자열마지막으로 등장하는 위치(인덱스)를 반환하는 메서드입니다. 이름의 'r'은 'right'(오른쪽)에서 유래했으며, 문자열의 뒤쪽부터 검색한다는 의미를 담고 있습니다.

만약 찾으려는 부분 문자열이 문자열 내에 존재하지 않는다면, -1을 반환하는 rfind()와 달리 rindex()ValueError 예외를 발생시킵니다.

기본 사용 예제

# 문자열 초기화
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an ian company'
# rindex()로 'Tutorialspoint'의 마지막 위치 찾기
print(string.rindex('Tutorialspoint'))
# rindex()로 'is'의 마지막 위치 찾기
print(string.rindex('is'))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

49
64

'Tutorialspoint'는 문자열에 두 번 등장하지만, rindex()는 마지막 등장 위치인 49를 반환합니다.

start와 end 인자로 검색 범위 지정하기

rindex()는 선택적 인자인 startend를 함께 사용할 수 있습니다. 이 인자들을 지정하면 해당 범위 내에서만 부분 문자열을 검색하며, end 인덱스는 검색 범위에 포함되지 않습니다.

예제

# 문자열 초기화
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an ian company'
# 인덱스 0~44 범위에서 'Tutorialspoint' 찾기
print(string.rindex('Tutorialspoint', 0, 45))
# 인덱스 0~44 범위에서 'is' 찾기
print(string.rindex('is', 0, 45))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

0
15

검색 범위를 첫 45글자로 제한했기 때문에, 앞쪽에 있는 'Tutorialspoint'(인덱스 0)와 'is'(인덱스 15)가 각각 검색된 것을 확인할 수 있습니다.

부분 문자열이 없을 때 발생하는 예외

찾으려는 부분 문자열이 문자열에 존재하지 않으면 rindex()는 ValueError 예외를 발생시킵니다. 실제 예제로 확인해 보겠습니다.

예제

# 문자열 초기화
string = 'Tutorialspoint is a great place to learn Python. Tutorialspoint is an ian company'
# 대소문자가 일치하지 않는 'tutorialspoint' 찾기
print(string.rindex('tutorialspoint'))

실행 결과

위 프로그램을 실행하면 다음과 같은 오류가 발생합니다.

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-12-76c8ebf53c60> in <module>
      3
      4 # finding the 'tutorialspoint'
----> 5 print(string.rindex('tutorialspoint'))
ValueError: substring not found

'tutorialspoint'는 소문자로 시작하기 때문에 원본 문자열의 'Tutorialspoint'와 일치하지 않습니다. 이처럼 rindex()는 대소문자를 구분하며, 일치하는 부분 문자열이 없으면 예외를 발생시킵니다.

rindex() vs rfind()

두 메서드 모두 부분 문자열의 마지막 위치를 찾는다는 점은 동일하지만, 차이점이 있습니다.

  • rindex(): 부분 문자열을 찾지 못하면 ValueError 예외 발생
  • rfind(): 부분 문자열을 찾지 못하면 -1 반환

따라서 부분 문자열의 존재 여부가 확실하지 않다면 try-except 문으로 예외를 처리하거나, rfind()를 사용하는 것이 더 안전할 수 있습니다.

마무리

이번 튜토리얼에서는 파이썬 문자열의 rindex() 메서드를 사용해 부분 문자열의 마지막 등장 위치를 찾는 방법을 배웠습니다. start와 end 인자를 활용한 검색 범위 제한 방법과, 부분 문자열이 없을 때 발생하는 예외 처리까지 살펴보았습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.