파이썬에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

  1. in 문자열에 하위 문자열이 포함되어 있는지 확인하는 연산자
  2. 문자열에 하위 문자열이 포함되어 있는지 확인하는 str.find()메소드
  3. str.index()메소드
  4. 부분 문자열 검사 솔루션 결론

주어진 문자열에 특정 하위 문자열이 포함되어 있는지 확인해야하는 경우가 종종 있습니다. 여기에 몇 가지 방법을 나열한 다음 실행 시간 성능을 비교하여 가장 효율적인 방법을 선택합니다.

주어진 문자열로 주어진 문자열이고 주어진 문자열은 검사 할 문자열입니다.

in 문자열에 하위 문자열이 포함되어 있는지 확인하는 연산자

in operator는 멤버쉽 확인 연산자입니다. xy의 멤버이거나 다른 말로 yx가 포함되어 있으면 y 의 x 는 ‘참’으로 평가됩니다.

문자열 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()메소드

findstring-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

부분 문자열 검사 솔루션 결론

  1. in 연산자는 주어진 문자열에 하위 문자열이 존재하는지 확인하기 위해 사용해야하는 연산자입니다.
  2. str.find()str.index()도 사용할 수 있지만 성능이 저하되어 최적이 아닙니다.

관련 문장 - Python String

  • 파이썬 2와 3에서 문자열을 소문자로 변환하는 방법