파이썬에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법
-
in
문자열에 하위 문자열이 포함되어 있는지 확인하는 연산자 -
문자열에 하위 문자열이 포함되어 있는지 확인하는
str.find()
메소드 -
str.index()
메소드 - 부분 문자열 검사 솔루션 결론
주어진 문자열에 특정 하위 문자열이 포함되어 있는지 확인해야하는 경우가 종종 있습니다. 여기에 몇 가지 방법을 나열한 다음 실행 시간 성능을 비교하여 가장 효율적인 방법을 선택합니다.
주어진 문자열로 주어진 문자열이고 주어진 문자열은 검사 할 문자열입니다.
in
문자열에 하위 문자열이 포함되어 있는지 확인하는 연산자
in
operator는 멤버쉽 확인 연산자입니다. x in y
는 x
가 y
의 구성원인 경우, 즉 y
에 x
가 포함되어 있으면 True
로 평가됩니다.
문자열 y
에 하위 문자열 x
가 포함되어 있으면 True
를 반환합니다.
>>> "given" in "It is a given string"
True
>>> "gaven" in "It is a given string"
False
in
운영자 성능
import timeit
def in_method(given, sub):
return sub in given
print(min(timeit.repeat(lambda: in_method("It is a given string", "given"))))
0.2888628
문자열에 하위 문자열이 포함되어 있는지 확인하는 str.find()
메소드
find
는 string
-str.find(sub)
의 내장 메소드입니다.
서브 스트링 sub
가있는 str
에서 가장 낮은 인덱스를 리턴하고,sub
가 없으면-1
을 리턴합니다.
>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
- 1
str.find()
메소드 성능
import timeit
def find_method(given, sub):
return given.find(sub)
print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.42845349999999993
str.index()
메소드
str.index(sub)
는 sub
가있는 str
에서 가장 낮은 인덱스를 반환하는 string
내장 메소드입니다. 서브 스트링 sub
가 없으면 ValueError
가 발생합니다.
>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
givenStr.index('gaven')
ValueError: substring not found
str.index()
메소드 성능
import timeit
def find_method(given, sub):
return given.find(sub)
print(min(timeit.repeat(lambda: find_method("It is a given string", "given"))))
0.457951
부분 문자열 검사 솔루션 결론
in
연산자는 주어진 문자열에 하위 문자열이 존재하는지 확인하기 위해 사용해야하는 연산자입니다.str.find()
및str.index()
도 사용할 수 있지만 성능이 저하되어 최적이 아닙니다.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook