str.find() 메서드는 문자열(string) 내에서 특정 부분 문자열(substring)의 첫 번째 등장 위치를 찾는 내장 함수입니다. 찾지 못하면 -1을 반환합니다.
📌 기본 문법
string.find(substring, start, end)
매개변수 설명
substring: 찾고자 하는 문자열 (필수)
start (선택): 검색을 시작할 인덱스 (기본값 0)
end (선택): 검색을 끝낼 인덱스 (기본값 문자열 끝)
반환값: 찾은 문자열의 첫 번째 등장 인덱스, 찾지 못하면 -1
✅ 예제 1: 기본 사용법
text = "Hello, world!"
index = text.find("world")
print(index) # 출력: 7
"world"가 "Hello, world!"에서 인덱스 7 위치에서 시작하므로 7 반환.
✅ 예제 2: 존재하지 않는 경우
index = text.find("Python")
print(index) # 출력: -1
"Python"은 "Hello, world!"에 없기 때문에 -1을 반환.
✅ 예제 3: 시작 위치 지정 (start 인자)
text = "banana"
index = text.find("na", 3) # 인덱스 3부터 검색 시작
print(index) # 출력: 4
"banana"에서 "na"는 두 번 등장 (2, 4).
start=3이므로 두 번째 "na" (인덱스 4) 를 찾음.
✅ 예제 4: 범위 지정 (start, end 인자)
text = "hello world, hello python"
index = text.find("hello", 10, 25) # 10~25 범위에서 검색
print(index) # 출력: 13
전체 문자열 "hello world, hello python"에서 "hello"는 인덱스 0과 13 에 있음.
start=10이므로 두 번째 "hello" (인덱스 13) 를 찾음.
✅ 예제 5: .rfind() (오른쪽부터 찾기)
str.rfind()는 오른쪽(문자열의 끝)부터 검색하지만, 반환하는 값은 왼쪽 기준의 인덱스!
text = "hello world, hello python"
index = text.rfind("hello") # 오른쪽부터 찾음
print(index) # 출력: 13
"hello"가 두 번 등장 (0과 13).
.rfind()는 오른쪽 "hello"(인덱스 13)의 위치를 반환.
🚨 .find()와 .index() 차이점
메서드 찾을 문자열이 없을 때 반환값
.find() -1 반환
.index() ValueError 발생
.index() 예제
text = "hello world"
print(text.find("Python")) # -1
print(text.index("Python")) # ValueError: substring not found
.find()는 에러 없이 -1을 반환하지만, .index()는 예외가 발생하므로 try-except로 감싸서 사용해야 함.
📌 .find()가 유용한 경우
부분 문자열 포함 여부 확인
text = "hello world"
if text.find("world") != -1:
print("부분 문자열이 존재함!")
→ if "world" in text: 같은 in 연산자를 써도 됨.
데이터 위치 찾기
csv_data = "name,age,city"
comma_index = csv_data.find(",")
print(comma_index) # 첫 번째 쉼표 위치 출력
문자열 슬라이싱을 위한 위치 찾기
sentence = "My name is John."
pos = sentence.find("name")
result = sentence[pos:] # "name" 이후 문자열 추출
print(result) # "name is John."
🚀 결론
.find()는 문자열에서 특정 부분 문자열을 찾고, 첫 등장 위치를 반환하는 유용한 메서드.
.index()와 비슷하지만, 찾지 못하면 -1을 반환하므로 안전하게 사용할 수 있음.