문자열에서 하위 문자열의 n번째 발생 찾기
하위 문자열의 n번째 발생에 해당하는 인덱스를 식별하는 것은 다양한 프로그래밍 시나리오에서 자주 발생하는 작업입니다. Python에는 이러한 목적으로 특별히 설계된 내장 함수가 없습니다. 그러나 이 결과를 얻기 위해 사용할 수 있는 몇 가지 접근 방식이 있습니다.
한 가지 간단한 접근 방식은 루프를 사용하여 문자열을 반복하고 하위 문자열의 발생 횟수를 계산하는 것입니다. 시작 인덱스는 첫 번째 발생 결과로 초기화되고 n 번째 발생을 찾을 때까지 루프가 계속됩니다.
def find_nth_occurrence(haystack, needle, n):
index = haystack.find(needle)
while index >= 0 and n > 1:
index = haystack.find(needle, index len(needle))
n -= 1
return index
이 방법은 효율적이고 이해하기 쉽지만 문자열을 여러 번 통과해야 하므로 큰 문자열의 경우 시간이 많이 걸릴 수 있습니다.
또 다른 Python 방식의 접근 방식은 정규식을 사용하는 것입니다. 표현. 정규식은 문자열을 검색하고 조작하는 강력하고 간결한 방법을 제공합니다. 다음 함수는 re.findall() 메서드를 사용하여 하위 문자열의 모든 항목을 찾은 다음 n번째 인덱스를 검색합니다.
import re
def find_nth_occurrence_regex(haystack, needle, n):
occurrences = re.findall(needle, haystack)
if len(occurrences) >= n:
return haystack.index(occurrences[n - 1])
else:
return -1
이 방법은 큰 문자열에 대한 반복 접근 방식보다 빠르지만 추가 모듈을 가져와야 합니다(re). 또한 일부 사용자에게는 반복 접근 방식보다 가독성이 떨어질 수 있습니다.
반복 접근 방식과 정규식 접근 방식 간의 선택은 궁극적으로 현재 작업의 특정 요구 사항에 따라 달라집니다. 작은 문자열의 경우 반복 접근 방식으로 충분할 수 있지만 큰 문자열의 경우 정규식 접근 방식이 더 나은 성능을 제공할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3