본문 바로가기

IT/Python

[python] 특정 문자 위치 찾기, 특정 문자 개수 찾기

문자열에서 특정 문자의 위치를 찾는 방법에 대해 알아보도록 하겠습니다. 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 
반응형