더북(TheBook)

‘시작’ 인수 1은 두 번째 문자부터 검색을 시작하겠다는 의미다. 만약 ‘시작’과 ‘종료’ 인수가 모두 사용되었다면 ‘시작’부터 ‘종료’ 전까지 검색을 수행한다. 이 인수들은 늘 그렇듯이 첫 인덱스는
0부터 시작된다.

(시작, 종료) 인수가 범위를 벗어난다면 count 메서드는 예외를 발생시키지 않은 채 최대한 많은 문자를 찾으려고 할 것이다.

유사한 규칙이 find 메서드에도 적용된다. 이 메서드가 호출되면 인수 ‘부분문자열’이 발견되는 첫 번째 위치를 양수 인덱스로 반환한다. -1을 반환하면 찾지 못했다는 의미다.

frank_str = 'doo be doo be doo...'
print(frank_str.find('doo'))     # 0 출력
print(frank_str.find('doob'))    # -1 출력

부분문자열이 나타나는 모든 위치를 확보하고 싶다면 다음과 같이 루프 안에서 find 메서드를 호출하면 된다.

frank_str = 'doo be doo be doo...'
n = -1

while True:
    n = frank_str.find('doo', n + 1)
    if n == -1:
      break
    print(n, end=' ')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.