더북(TheBook)

8.1.1 find( )로 문자열에서 부분 문자열 검색하기

컴퓨터에 들어 있는 파일 목록에서 특정 파일을 찾고 싶거나, 어떤 텍스트 파일에서 특정 단어를 찾고 싶다고 하자. 큰 문자열에서 대소문자를 구분하면서 부분 문자열을 검색하고 싶은 경우 find()를 쓸 수 있다.

대소문자를 변환하는 경우처럼 find()도 객체, 마침표, 명령 이름(find), 괄호 순서로 입력해야 한다. 예를 들면 "어떤_문자열".find('')"어떤_문자열"에서 ''(빈 문자열)를 찾는다, 빈 문자열은 모든 문자열에 들어간다는 점에 유의하라.

이때 find()의 괄호 속에 들어가는 검색 문자열은 문자열 객체여야 한다. find()가 돌려주는 결과는 문자열 내에서 검색 문자열과 일치하는 부분 문자열의 인덱스(0부터 시작)다. 혹시 일치하는 위치가 두 군데 이상이라면 결과 값으로 첫 번째 위치를 얻는다. 검색 문자열과 일치하는 부분 문자열을 찾을 수 없다면 -1을 얻는다. 예를 들어 "some_string".find("ing")"ing"가 8번 인덱스(9번째 글자)에 위치하기 때문에 결과 값이 8이고, "some_string".find("")는 0이다(빈 문자열은 문자열 안 어디서든 찾을 수 있기 때문이다. 문자열 맨 앞에서도 찾을 수 있다).

문자열에서 검색 문자열을 검색하되, 앞이 아니라 뒤에서부터 검색하고 싶다면 rfind()를 사용한다. rfind()r은 역방향(reverse) 검색이라는 뜻이다. rfind()는 문자열의 맨 뒤부터 검색을 시작해서 부분 문자열이 시작하는 위치를 (0부터 시작하는) 양수 인덱스로 돌려준다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.