‘시작’ 인수 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=' ')
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.