특정 문자열 위치 반환 함수 find()

이번 포스팅에서는 특정 문자열 위치 반환 함수 find() 에 대해서 알아보겠습니다. find() 함수는 특정 문자열의 포함 여부를 확인하여 특정 문자열이 처음 시작되는 인덱스를 반환합니다.

find() 함수 구문에 대해서 알아보고, 간단한 사용 방법과 사용 예제에 대해서도 알아보겠습니다.

find() 구문

find() 함수의 구문은 아래와 같으며, 반환값은 특정 문자열이 처음 시작되는 인덱스 값입니다. 특정 문자열이 존재하지 않는 경우, -1의 값을 반환합니다.


find(substart = 0end = None)


  • sub: 찾고자 하는 특정 문자열
  • start: 찾고자 하는 특정 문자열의 searching을 위한 시작 인덱스 (디폴트 값은 0)
  • end: 찾고자 하는 특정 문자열의 searching을 위한 마지막 인덱스 (옵션)


find() 간단한 사용 방법

find() 간단한 사용 예시

string = '5.3094.123'
string.find('.')
-----------------------------
1

string 객체에 ‘5.3094.123’을 저장하였습니다. string 객체에서 ‘.’ 문자열이 존재하는지 확인합니다. ‘.’ 은 총 2번 나옵니다. 2번째 자리(인덱스 1)와 7번째 자리(인덱스 6)에 있습니다.

2개의 인덱스 위치 중 첫 인덱스인 1의 값을 반환하게 됩니다.


find() 에서 start 인수 사용

string = '5.3094.123'
string.find('.', 2)
---------------------------
6

‘5.3094.123’ 문자열이 저장되어 있는 string 객체에서 ‘.’ 문자열을 찾습니다. 단, 조건이 있습니다. ‘.’ 문자열을 찾기 위한 첫 시작 인덱스가 2입니다. 즉, ‘.’ 문자열의 존재 여부를 3번째 자리부터 찾습니다.

3번째 자리 이후 가장 먼저 나오는 위치는 7번째 자리이고, 인덱스 값은 6입니다.


find() 에서 start 및 end 인수 사용

만약, 위의 예시에서 end 인수에 5을 입력하면 어떻게 될까요?

string = '5.3094.123'
string.find('.', 2, 5)
---------------------------
-1

3번째 자리(인덱스 2)부터 6번째 자리(인덱스 3) 사이에 ‘.’ 문자열은 존재하지 않기 때문에 -1 의 값을 반환하게 됩니다. end 인수 값을 7로 변경해 보면, 어떤 값이 나오는지 보겠습니다.

string = '5.3094.123'
string.find('.', 2, 7)
---------------------------
6

end 인수를 사용하지 않았을 때와 동일하게 6을 반환합니다. string 객체에 저장된 ‘5.3094.123’ 문자열 중 ‘.’ 과 ‘.’ 사이의 값인 3094 값을 저장하고 싶다면 어떻게 해야 할까요? 이를 일반화하여 특정 문자열 사이에 존재하는 값을 저장하고 싶다면 어떻게 해야 할까요?



find() 함수 사용의 심화 학습

3094 값을 저장하고자 하려면 우선, 규칙을 찾아야 합니다.

첫번째 특정 문자열 ‘.’ 의 인덱스에 + 1을 한 인덱스부터 두번째 특정 문자열 ‘.’ 의 인덱스에서 -1 을 한 인덱스 까지의 값을 가져오면 됩니다.

string = '5.3094.123'
string[string.find('.') + 1 : string.find('.', 2)] 
---------------------------------------------------------
'3094'

원하는 결과를 얻었습니다. 하나씩 분해해서 살펴 보겠습니다.

string.find('.') + 1
-----------------------
2

string 객체에 저장되어 있는 ‘5.3094.123’ 의 값에서 특정 문자열 ‘.’ 의 위치를 찾습니다. 위치는 2번째 이고, 이는 인덱스 값으로는 1이 됩니다. 여기에 1을 더해서 2라는 값을 찾습니다.

string.find('.', 2)
-----------------------
6

string 객체에 저장되어 있는 ‘5.3094.123’ 의 값에서 특정 문자열 ‘.’ 의 위치를 세번째 자리 (인덱스 2)부터 찾기 시작합니다. 그 다음으로 나오는 위치는 7번째 자리(인덱스 6)이고, 따라서 6의 값을 반환하게 됩니다.

string = '5.3094.123'
string[string.find('.') + 1 : string.find('.', 2)] 
-------------------------------------------------------------------
'3094'


# string[string.find('.') + 1 : string.find('.', 2)]는
# string[2 : 6] 과 동일합니다. 
string[2 : 6] # 인덱스 2 위치의 값부터 인덱스 5 위치의 값을 가져온다
-------------------------------------------------------------------
'3094'


결론

이번 포스팅에서는 특정 문자열 위치 반환 함수 find() 에 대한 기본 구문과 조금을 복잡해 보일 수 있는 사용방법에 대해서 알아보았습니다. 이러한 예시를 기반으로 다양한 패턴 속에서 있는 문자열을 가져와 저장하는 여러 방법을 구현해 볼 수 있습니다.

감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다