HOWTO · Python

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

이 튜토리얼에서는 문자열에 특정 하위 문자열이 포함되어 있는지 확인하는 여러 가지 방법을 소개합니다

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

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

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

in operator는 멤버쉽 확인 연산자입니다. x in yxy의 구성원인 경우, 즉 yx가 포함되어 있으면 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()메소드

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()도 사용할 수 있지만 성능이 저하되어 최적이 아닙니다.