문자열 목록에서 특정 부분 문자열(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 플래그를 함께 사용하는 것이 유용합니다.