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

Jinku Hu 2023년10월10일
  1. in 문자열에 하위 문자열이 포함되어 있는지 확인하는 연산자
  2. 문자열에 하위 문자열이 포함되어 있는지 확인하는 str.find()메소드
  3. str.index()메소드
  4. 부분 문자열 검사 솔루션 결론
파이썬에서 문자열에 하위 문자열이 포함되어 있는지 확인하는 방법

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

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

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

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

관련 문장 - Python String