김컴공랩

[Python] 문자열 함수 find() 를 이용해 index 찾기 본문

파이썬

[Python] 문자열 함수 find() 를 이용해 index 찾기

김컴공 2020. 11. 11. 20:28

 

 

헬로월드! 김컴공입니다.

오늘은 문자열에 내가 찾고 싶은 문자열이 포함이 돼있는지, 그렇다면 index 는 얼마인지, 문자열 함수 find() 를 이용해 찾아보겠습니다.

 

 

find( param1 ) 함수

문자열의 멤버함수인 find() 를 이용합니다.

위 이미지의 코드를 천천히 읽어보면,

"Hello World" 문자열이 담긴 string 이라는 변수에서,

find() 함수의 매개변수로 찾을 문자열 "H" 를 넘겨줍니다.

 

"H" 라는 문자(열)은 가장 맨 첫번째에 있기 때문에 index 가 0 인 것을 알 수 있습니다.

 

 

 

 

 

 

 

find( param1, param2 ) 함수

그렇다면 이번엔 "o" 를 찾아볼까요?

 

뒤의 "o" 는 어떻게..?

 

이번엔 string 변수에서 find() 함수로 "o" 를 찾았더니, index 로 4를 반환해줬습니다.

맞는 계산입니다. 근데 우리는 뒤에 "World" 에 속한 "o" 를 찾고 싶은데 어떡하죠?

 

find() 함수의 2번째 파라미터로 index 를 넣으면, find 함수는 1번째 파라미터의 문자열을 찾을 때

2번째 파라미터로 받은 index 부터 탐색을 시작합니다.

 

위 사실을 이용해 "World" 의 "o" index 를 찾아보겠습니다. 

 

 

2번째 파라미터로 "W" 의 인덱스를 집어넣었다.

 

2번째 파라미터에 "W" 의 index 를 넣음으로써,

"W" index 부터 시작해서 "o" 를 탐색하기 때문에,

그 이후에 가장 먼저 나타나는 "o" 의 index 인 7 을 반환했습니다.

 

 

 

 

응용

모든 "o" 의 위치를 하나의 코드로 찾고 싶습니다.

그렇다면 반복문을 활용해서 찾아보도록 하겠습니다.

 

find() 함수는 해당 문자열을 찾을 수 없다면 -1 을 반환합니다.

string = "Hello World"
index = -1
while True:
	index = string.find("o", index+1)    
	if index == -1:        
		break    
	print(index)

 

매 루프마다 index 를 변수로써 저장해놓고,

다음 루프때 전에 찾은 index 를 제외하고 그 다음부터 찾기 위해

매 루프마다 2번째 파라미터로 저장한 변수 index + 1 를 입력해줍니다.

 

그렇다면 위 이미지처럼 깔끔하게 모든 "o" 를 찾아낼 수 있습니다!