오늘은 파이썬에서 문자열에서 특정 문자 혹은 문자열을 찾을 때 사용되는 find 함수에 대해 알아보는 시간을 가져보자.
1. find() 함수의 기본 구조
find() 함수는 문자열에서 특정 부분 문자열(substring)을 찾고, 해당 부분 문자열이 처음으로 등장하는 인덱스를 반환하는 메서드이다. 이 함수는 문자열의 메서드로 사용되며, 다음과 같은 형식을 갖는다.
문자열.find(substring, start, end)
각 매개변수의 역할
매개변수 | 역할 |
문자열 | 부분 문자열을 찾을 대상 문자열 |
substring | 찾고자 하는 부분 문자열 |
start(선택적) | 검색을 시작할 문자열 내의 인덱스를 나타내며, 기본값은 0이다. 이 매개변수를 사용하면 특정 위치부터 검색을 시작할 수 있다. |
end(선택적) | 검색을 종료할 문자열 내의 인덱스를 나타내며, 기본값은 문자열의 끝가지 검색한다. 이 매개변수를 사용하면 검색 범위를 제한할 수 있다. |
2. find() 함수 예제
1. 단순한 문자열 검색
text = "Hello, World!"
index = text.find("World")
print(index) # 출력: 7
text 변수에 문자열 "Hello, World!"를 할당하고 find() 함수를 사용하여 text 변수에서 "World"라는 부분 문자열을 검색한다. find() 함수를 통해 "World"를 문자열에서 처음으로 발견하는 위치의 인덱스를 반환하게 된다.
2. 검색 범위 제안하기
text = "Hello, World! Hello, Python!"
index = text.find("Hello", 7) # 인덱스 7 이후부터 검색
print(index) # 출력: 13
find() 함수의 두 번째 인자인 7에 의해 문자열 인덱스 7 이후부터 시작하므로, 첫 번째 "Hello"는 검색에서 제외된다.
3. 검색 문자열이 없을 때 -1 반환
text = "Hello, World!"
index = text.find("Python")
print(index) # 출력: -1
만약 검색할 부분 문자열이 문자열에 존재하지 않으면 -1을 반환하게 된다.
4. 대소문자 구분
text = "Hello, World!"
index = text.find("world")
print(index) # 출력: -1 (대소문자가 다르므로 검색 실패)
find() 함수는 대소문자를 구분하므로 "world"와 "World"는 대소문자가 다르므로 다른 문자열로 처리된다.
5. 대소문자 무시
text = "Hello, World!"
index = text.lower().find("world")
print(index) # 출력: 7 (대소문자를 무시하고 검색)
text.lower()로 먼저 문자열을 소문자로 변환한다. 이렇게 하면 원래 문자열의 대소문자 구분을 무시하고 검색할 수 있게 된다.
6. 반복해서 검색
text = "Hello, Hello, Hello, World!"
start = 0
while True:
index = text.find("Hello", start)
if index == -1:
break
print("Hello found at index:", index)
start = index + 1
Hello found at index: 0
Hello found at index: 7
Hello found at index: 14
"Hello, Hello, Hello, World!"에서 "Hello"를 반복해서 검색하고, 각각의 "Hello"가 발견된 위치를 출력하게 된다. start 변수를 업데이트하여 검색 범위를 제한하므로, 모든 "Hello"를 찾을 수 있다.