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

Python – 문자열에서 특정 부분 문자열이 나타나는 모든 위치 찾기

문자열 목록에서 특정 부분 문자열(substring)이 나타나는 모든 위치를 찾아야 할 때, 간단한 리스트 컴프리헨션(list comprehension)과 startswith 메서드를 활용하면 손쉽게 해결할 수 있습니다.

예제 코드

다음은 실제 구현 예시입니다.

my_string = "Is python fun to learn?"

print("The list is :")
print(my_string)

substring = "pyt"
print("The substring is :")
print(substring)

my_result = [i for i in range(len(my_string)) if my_string.startswith(substring, i)]

print("The result is :")
print(my_result)

실행 결과

The list is :
Is python fun to learn?
The substring is :
pyt
The result is :
[3]

코드 설명

  • 먼저 하나의 문자열을 정의하고 콘솔에 출력합니다.

  • 찾고자 하는 부분 문자열을 별도로 정의한 뒤 화면에 표시합니다.

  • 리스트 컴프리헨션을 사용해 문자열 전체를 인덱스 단위로 순회합니다.

  • startswith 메서드는 두 번째 인자로 시작 위치를 지정할 수 있으며, 해당 위치부터 문자열이 지정된 패턴(부분 문자열)으로 시작하는지 검사합니다.

  • 조건이 참인 인덱스 값만 모아 새로운 리스트를 생성합니다.

  • 최종 결과 리스트가 콘솔에 출력됩니다.

추가 팁

위 방법 외에도 str.find() 메서드를 반복적으로 호출하거나, 정규 표현식 모듈인 re.finditer()를 사용하면 동일한 결과를 얻을 수 있습니다. 특히 대소문자를 구분하지 않고 검색하려면 re 모듈에서 re.IGNORECASE 플래그를 함께 사용하는 것이 유용합니다.