‘시작’ 인수 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=' ')