문자열에서 특정 문자의 위치를 찾는 방법에 대해 알아보도록 하겠습니다. find()와 index() 두가지 함수를 이용하는 방법과 이를 응용하여 문자열에 특정문자가 몇 개가 있는지에 대한 문제를 풀어보도록 하겠습니다.
1. index(vlaue, start, end) 이용하여 특정 문자열 위치 찾기
Hello my python world 라는 문장에서 python 이라는 단어의 위치를 찾도록 하겠습니다.
str2 = “Hello my python world!”
idx = str2.index(“python”)
print(idx) # 9 인덱스 부터 시작함을 알 수 있습니다.
만약 문장에 python이 2개 라면 어떻게 찾을까?
str2 = “Hello my python world! My name is python”
idx = str2.index(“python”)
print(idx) # 첫번째로 찾은 python의 인덱스만 호출하고 끝나버림
idx = str2.index(“python”, 10) # 10번째 인덱스부터 다시 검색
print(idx) # 두번째로 찾은 python의 인덱스를 호출해줌
만약 찾고자 하는 단어가 없을 경우에는 어떻게 될까?
idx = str2.index(“paraies”)
ValuseError: substring not Found 라는 에러가 발생합니다.
에러 해결을 위해 try except문을 추가해줍니다.
str2 = “hello my python world!”
try:
idx = str2.index(“papaies”)
except ValueError as e :
print(“Warning : “, e)
2. Find(value, start, end)이용하여 특정문자열 위치찾기
Find 함수를 이용하는 방법은 index 방법과 동일하다. 차이점이 있다면 찾고자 하는 단어가 없을 경우 index 는 error를 뱉는다면 find 는 -1 리턴한다는 점이다. 확인해보자
str2 = “hello my python world! my name is python”
# python 위치 찾기
idx = str2.find(“python”)
print(idx) # 9
# 2번째 python 찾기
idx = str2.find(“python”, 10)
print(idx) # 34
# 없는 단어 찾기
idx = str2.find(“papaies”)
print(idx) # -1
3. 특정문자가 들어간 단어 개수 찾기
str2 = “hello my python world! my name is python, python, python”
index_list = [] # 인덱스 위치값을 담을 리스트
index = 0 # 인덱스 위치 값
while index > -1 : # index가 -1일때까지 반복
index = str2.find(“python”, index) # 문자열에서 python 찾음, start index
if index > -1: # index가 -1이 아니면, 즉 python 을 찾으면
index_list.append(index) # 해당 인덱스를 리스트에 담기
index = index+1 # 해당 인덱스에서 1을 추가하여 다시 find 반복문 실행
print(index_list) # [9, 34, 42, 51]
print(len(index_list)) # 4 반응형
'IT > Python' 카테고리의 다른 글
| [Python] 딕셔너리에 키 값 확인하고 자동으로 값 생성하기 (0) | 2022.08.31 |
|---|---|
| [Python] 흔한 파이썬 리스트 복사 오류 , 제대로 파이썬 리스트 복사하기 (0) | 2022.08.30 |
| [Python] 파이썬 문자와 숫자 형식의 저장방식 차이 ( 문자열 인덱싱, 입력, 출력) (0) | 2022.08.11 |
| [Python] Dictionary 자료형 (0) | 2022.08.08 |
| [Python] 날짜타입 문자열로 변경하기 - Datetime to String (0) | 2022.05.30 |