python | 뒤에서부터 찾을 때 사용하는 rfind(), rindex()

2023. 4. 17. 21:44·TIL/python

찾고자 하는 요소가 앞에서부터 몇 번째에 위치하는지 알고자 하면 find 또는 index를 사용하면 된다.

 

python | 파이썬 find() 함수 사용 및 index()와 차이점

파이썬에서 특정 문자열의 위치, 인덱스 번호를 찾고자 할 때 find() 함수를 사용할 수 있다. 예를 들어, '123456'이라는 문자열에서 '3'의 인덱스 번호를 찾으려면 찾고자 하는 문자열을 매개변수로

dduniverse.tistory.com

 

하지만, 뒤에서부터 찾고 싶을 때는 어떻게 해야 할까?

물론 주어진 리스트를 거꾸로 정렬한 뒤 찾는 방법도 있겠지만, 원래 상태에서 뒤에서부터의 위치를 찾아야 한다면 새로운 방법이 필요하다.

그럴 때 index, find 앞에 r만 붙여 rindex, rfind를 사용하면 된다.

 

먼저, rindex부터 살펴보자.

'abcdefghijklmnopqrstuvwxyz'와 같이 반복되는 문자열이 하나도 없는 경우에는 index, rindex의 결과가 같다.

x의 위치는 23번 인덱스에 위치하기 때문에 앞에서부터 x를 찾아도, 뒤에서부터 x를 찾아도 같은 위치에 존재한다.

하지만 'wxyzwxyz'와 같이 반복되는 문자열이 있는 경우에는 index, rindex의 결과가 다른 것을 볼 수 있다.

앞에서부터 'x'의 위치를 찾으면 1번 인덱스가 리턴되는 반면, 뒤에서부터 'x'를 찾으면 5번 인덱스를 리턴한다.

 

다음으로 rfind를 살펴보자.

rfind 역시 반복되는 문자열이 없으면 find와 결과가 같은 것을 볼 수 있다.

하지만, 반복되는 문자열이 있으면 rfind는 뒤에서부터 주어진 문자열과 일치하는 위치를 찾아주고, find는 앞에서부터 주어진 문자열과 일치하는 위치를 찾아준다.

 

조금 더 긴 문장에서 is의 위치를 find, rfind로 찾아보자.

find, rfind / index, rindex

find를 사용하여 'is'를 찾으면 앞에서부터 찾으므로 my name is ddu에서의 'is'의 위치를 찾아주고, rfind를 사용하여 'is'를 찾으면 뒤에서부터 찾으므로 this is my blog! 에서의 'is'의 위치를 찾아준다.

index를 사용하여 'o'를 찾으면 앞에서부터 찾으므로 Hello에서의 'o'의 위치를 찾아주고, rindex를 사용하여 'o'를 찾으면 뒤에서부터 찾으므로 this is my blog!에서의 'o'의 위치를 찾아준다.

 

정해진 범위 안에서 찾기 위해서는 rfind(찾을 문자열, 시작 위치, 끝 위치), rindex(찾을 문자열, 시작 위치, 끝 위치)로 작성해 주면 된다.

시작부터 마지막까지 탐색하고 싶다면 끝 위치는 생략할 수 있다. 

정해진 범위 안에서 찾고자 하는 문자열이 없으면 rfind는 find와 같이 -1을 리턴한다.

그와 반대로 rindex는 찾고자 하는 문자열이 없으면 index와 마찬가지로 ValueError가 발생한다.

반응형
저작자표시 (새창열림)
'TIL/python' 카테고리의 다른 글
  • python | collections.Counter 사용하기
  • pandas | datetime 라이브러리 사용하기
  • python | for ~ else 구문 사용하기
  • python | 10진법을 n진법으로 나타내기
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
python | 뒤에서부터 찾을 때 사용하는 rfind(), rindex()
상단으로

티스토리툴바