레이블이 find인 게시물을 표시합니다. 모든 게시물 표시
레이블이 find인 게시물을 표시합니다. 모든 게시물 표시

2021년 10월 16일 토요일

python find / rfind / in (문자열 찾기 find, rfind, in)

python에서 문자열을 검색하는 방법은 크게 string find 와 정규식을 이용하는 방법이 있습니다.


정규식을 사용하는 경우

검색하고자 하는 문자열이 특별한 규칙인 경우 사용하게 됩니다. 

예) P12345  P23812323  P1232344 (P로 시작하는 숫자 검색을 원함)


find 사용 하는 경우

검색 하고자 하는 문자열이 고정된 경우+문자열이 어디에 위치한지 알기를 원함

예) abcdefghi  ( cde 인 문자열을 찾기를 원함 )


in을 사용 하는 경우

검색 하고자 하는 문자열이 고정된 경우+문자열이 어디에 위치한지 궁금하지 않음

예) abcdefghi  ( cde 인 문자열이 포함되어 있는지? )


사용법

str.find(sub[, start[, end]])

- [ ] 기호는 사용해도 되고 안해도 된다는 의미

부분 문자열 sub 가 슬라이스 str[start:end] 내에 등장하는 가장 작은 문자열의 인덱스를 돌려줍니다. 이때 start:end 넣더라도 리턴되는 값은 슬라이스 되기전 인덱스를 기준으로 합니다. 

sub 가 str내에 없으면 -1 을 돌려줍니다.


정규식은 다른 글에 있으니 여기에서는 find 코드 예제입니다.

#                11111111112
#      012345678901234567890
print("123456789012345623456".find("456"))        # 3
print("123456789012345623456".find("45A"))        # -1
print("123456789012345623456".find("456",10,16))  # 13

in 

print("456" in "123456789012345623456")  #True
print("45A" in "123456789012345623456")  #False


str.rfind(sub[, start[, end]])

부분 문자열 sub 가 str[start:end] 내에 등장하는 가장 큰 문자열의 인덱스를 돌려줍니다. rfind와 find의 차이점은 rfind는 뒤에서 부터 수행합니다. 

sub 가 str내에 없으면 -1 을 돌려줍니다.

#                11111111112
#      012345678901234567890
print("123456789012345623456".rfind("456"))        # 18
print("123456789012345623456".rfind("45A"))        # -1
print("123456789012345623456".rfind("456",10,16))  # 13