본문 바로가기
Python

파이썬 문자열 검색의 기초 find 함수 알아보기

by 노마드 산코디 2023. 10. 4.
728x90

이번 포스팅은 파이썬 문자열 검색에 유용한 find 함수에 대해서 정리해 보려고 합니다. 문자열 처리에서 핵심 역할을 하는 이 함수를 다양한 예제와 함께 소개하고, 문자열 내에서 원하는 내용을 찾는 기술을 배워보겠습니다.

 




1. find 함수란?

파이썬의 find() 함수는 문자열에서 특정 부분 문자열을 검색하고, 그 부분 문자열이 처음으로 등장하는 위치(인덱스)를 반환하는 함수입니다.


find() 함수의 개요

  • find() 함수는 문자열에서 특정 부분 문자열을 찾을 때 사용됩니다.
  • 찾고자 하는 부분 문자열이 문자열 내에서 처음으로 나타나는 위치(인덱스)를 반환합니다. 만약 부분 문자열을 찾을 수 없으면 -1을 반환합니다.
  • find() 함수는 대소문자를 구분하므로 정확한 대소문자 일치를 요구합니다.
  • 문자열에서 왼쪽(처음)부터 검색하여 처음 발견된 부분 문자열의 인덱스를 반환합니다.


find() 함수 문법

string.find(substring, start, end)

 

  • string
    문자열에서 검색을 수행할 대상 문자열입니다.

  • substring
    찾고자 하는 부분 문자열입니다.


    start (선택)
    검색을 시작할 인덱스를 지정합니다. 기본값은 0입니다.

  • end (선택)
    검색을 종료할 인덱스를 지정합니다. 기본값은 문자열의 끝까지를 의미하는 len(string)입니다.



find() 함수 사용 예시

my_string = "Hello, World!"
position = my_string.find("World")
print("World의 위치:", position)  # 출력: 7


위의 예제에서는 "Hello, World!" 문자열에서 "World" 부분 문자열을 찾고, 해당 부분 문자열의 위치(인덱스)를 반환합니다. "World"는 문자열의 7번 인덱스부터 시작하므로 7이 출력됩니다.

 

 

 


2. find() 함수의 활용 예제



1. 부분 문자열의 위치 찾기

my_string = "Hello, World!"
position = my_string.find("World")
if position != -1:
    print("World의 위치:", position)  # 출력: World의 위치: 7
else:
    print("찾는 문자열이 없습니다.")


이 예제에서는 "Hello, World!" 문자열에서 "World" 부분 문자열을 찾고, 해당 부분 문자열의 위치(인덱스)를 출력합니다.




2. 대소문자 구분

my_string = "Python is easy to learn. python is powerful."
search_term = "python"
position = my_string.find(search_term)
if position != -1:
    print(f"{search_term}의 위치:", position)  # 출력: python의 위치: 22
else:
    print(f"{search_term}을(를) 찾을 수 없습니다.")


이 예제에서는 대소문자를 구분하여 "Python"이라는 부분 문자열을 찾는데, find() 함수는 대소문자를 구분하므로 첫 번째 "python" 문자열의 위치를 반환합니다.




3. 시작 위치와 끝 위치 지정

my_string = "Python is easy to learn. Python is powerful."
search_term = "Python"
start_position = 14
end_position = 40
position = my_string.find(search_term, start_position, end_position)
if position != -1:
    print(f"{search_term}의 위치:", position)  # 출력: Python의 위치: 26
else:
    print(f"{search_term}을(를) 찾을 수 없습니다.")


이 예제에서는 시작 위치와 끝 위치를 지정하여 "Python" 부분 문자열을 찾습니다. start_position은 검색을 시작할 인덱스를, end_position은 검색을 종료할 인덱스를 나타냅니다.




4. 부분 문자열 존재 여부 확인

my_string = "Python is easy to learn."
search_term = "Java"
if my_string.find(search_term) != -1:
    print(f"{search_term}이(가) 문자열 내에 존재합니다.")
else:
    print(f"{search_term}이(가) 문자열 내에 존재하지 않습니다.")  # 출력: Java이(가) 문자열 내에 존재하지 않습니다.


이 예제에서는 특정 부분 문자열이 문자열 내에 존재하는지 여부를 확인하고 메시지를 출력합니다.




find() 함수를 이용하면 문자열에서 부분 문자열을 찾아 위치를 파악하거나 부분 문자열의 존재 여부를 확인하는 등 다양한 문자열 처리 작업을 수행할 수 있습니다.








3. find() 함수의 예외 상황



1. 부분 문자열을 찾을 수 없는 경우
find() 메서드는 문자열 내에서 특정 부분 문자열을 찾을 수 없는 경우 -1을 반환합니다. 따라서 부분 문자열이 문자열 내에 존재하지 않을 때 -1이 반환되므로 이를 확인하여 처리해야 합니다.

my_string = "Hello, World!"
position = my_string.find("Python")
if position == -1:
    print("부분 문자열을 찾을 수 없습니다.")




2. 시작 위치와 종료 위치가 범위를 벗어난 경우
find() 메서드의 start와 end 인덱스를 지정할 수 있습니다. 하지만 이들 인덱스가 문자열의 범위를 벗어나면 ValueError 예외가 발생합니다.

my_string = "Hello, World!"
try:
    position = my_string.find("World", 10, 5)  # 시작 위치가 종료 위치보다 큰 경우
except ValueError as e:
    print("ValueError 발생:", e)




3. None 또는 다른 자료형을 검색하려는 경우
find() 메서드는 문자열을 검색하므로 None 또는 다른 자료형을 검색하려고 시도하면 TypeError 예외가 발생합니다.

my_string = "Hello, World!"
try:
    position = my_string.find(None)  # None을 검색하려는 경우
except TypeError as e:
    print("TypeError 발생:", e)




4. 문자열 검색 중에 인덱스 오버플로우가 발생하는 경우
문자열의 범위를 벗어나는 인덱스로 검색을 시도하면 IndexError 예외가 발생합니다.

my_string = "Hello, World!"
try:
    position = my_string.find("World", 0, 1000)  # 종료 위치가 문자열 길이를 벗어나는 경우
except IndexError as e:
    print("IndexError 발생:", e)




이러한 예외 상황에 대비하여 적절한 예외 처리를 수행하고, 코드의 안정성을 보장할 수 있도록 해야 합니다.







최종 정리

이번 포스팅에서는 파이썬의 문자열 검색을 위한 find() 함수에 대한 내용을 정리해 보았습니다. find() 함수를 이용하여 문자열에서 부분 문자열을 찾고, 해당 부분 문자열이 처음으로 등장하는 위치를 파악하는 방법에 대해 살펴보았습니다. 또한 예외 상황에 대한 처리 방법도 다루어 코드의 안정성을 높이는 방법도 알아보았습니다. 

감사합니다.

 

728x90
반응형