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

Python NumPy char.rfind() – 문자열에서 부분 문자열이 발견되는 가장 높은 인덱스 구하기

문자열 내에서 지정한 부분 문자열(sub)이 마지막으로 등장하는 위치, 즉 가장 높은 인덱스를 반환하려면 Python NumPy의 numpy.char.rfind() 메서드를 사용하면 됩니다. 이 메서드는 정수(int) 배열을 결과로 반환하며, 부분 문자열을 찾지 못한 경우에는 -1을 반환합니다.

각 매개변수는 다음과 같습니다.

  • 첫 번째 매개변수: 검색 대상이 되는 입력 배열
  • 두 번째 매개변수: 찾고자 하는 부분 문자열
  • 세 번째·네 번째 매개변수(선택 사항): start와 end 값으로, Python 슬라이싱 표기법과 동일하게 해석됩니다.

단계별 진행

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

문자열로 구성된 1차원 배열을 생성합니다.

arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])

생성한 배열을 화면에 출력합니다.

print("Array...\n", arr)

배열의 데이터 타입을 확인합니다.

print("\nArray datatype...\n", arr.dtype)

배열의 차원을 확인합니다.

print("\nArray Dimensions...\n", arr.ndim)

배열의 형태(shape)를 확인합니다.

print("\nOur Array Shape...\n", arr.shape)

배열에 포함된 요소의 개수를 확인합니다.

print("\nNumber of elements in the Array...\n", arr.size)

이제 numpy.char.rfind() 메서드를 사용해 각 요소에서 부분 문자열 'AT'가 발견되는 가장 높은 인덱스를 구합니다. 이때 start=4, end=9 범위를 지정했습니다.

print("\nResult (rfind)...\n", np.char.rfind(arr, 'AT', start=4, end=9))

전체 예제 코드

import numpy as np

# 문자열로 구성된 1차원 배열 생성
arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])

# 배열 출력
print("Array...\n", arr)

# 데이터 타입 확인
print("\nArray datatype...\n", arr.dtype)

# 차원 확인
print("\nArray Dimensions...\n", arr.ndim)

# 형태(shape) 확인
print("\nOur Array Shape...\n", arr.shape)

# 요소 개수 확인
print("\nNumber of elements in the Array...\n", arr.size)

# rfind() 메서드로 'AT'가 발견되는 가장 높은 인덱스 반환
print("\nResult (rfind)...\n", np.char.rfind(arr, 'AT', start=4, end=9))

실행 결과

Array...
['KATIE' 'JOHN' 'AmY' 'BRATleuATp']

Array datatype...
<U10

Array Dimensions...
1

Our Array Shape...
(4,)

Number of elements in the Array...
4

Result (rfind)...
[-1 -1 -1 7]

결과 해석

'KATIE'는 인덱스 4~9 범위 안에 'AT'가 존재하지 않아 -1이 반환되었습니다('AT'는 인덱스 1에 위치하지만 시작 범위가 4이므로 제외). 'JOHN'과 'AmY' 역시 해당 범위에서 'AT'를 찾지 못해 -1입니다. 반면 'BRATleuATp'는 범위 내에서 'AT'가 두 번 등장하며, rfind()는 오른쪽 끝에서 가장 가까운 위치인 7을 반환합니다. 이처럼 rfind()는 find()와 달리 부분 문자열이 여러 번 나타날 때 마지막(가장 높은) 인덱스를 돌려준다는 점이 핵심입니다.