"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python의 문자열에서 하위 문자열의 n 번째 발생을 찾는 방법은 무엇입니까?

Python의 문자열에서 하위 문자열의 n 번째 발생을 찾는 방법은 무엇입니까?

2024-11-06에 게시됨
검색:227

How to Find the nth Occurrence of a Substring in a String in Python?

문자열에서 하위 문자열의 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). 또한 일부 사용자에게는 반복 접근 방식보다 가독성이 떨어질 수 있습니다.

반복 접근 방식과 정규식 접근 방식 간의 선택은 궁극적으로 현재 작업의 특정 요구 사항에 따라 달라집니다. 작은 문자열의 경우 반복 접근 방식으로 충분할 수 있지만 큰 문자열의 경우 정규식 접근 방식이 더 나은 성능을 제공할 수 있습니다.

릴리스 선언문 이 글은 1729380497에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3