Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 문자열에 부분 문자열이 포함되어 있는지 확인하는 방법

파이썬으로 데이터 분석을 하다 보면, 주어진 부분 문자열(서브스트링)이 더 큰 문자열 안에 포함되어 있는지 확인해야 하는 경우가 자주 발생합니다. 이 글에서는 find() 메서드와 count() 메서드를 활용해 부분 문자열의 존재 여부를 판별하는 방법을 예제와 함께 살펴봅니다.

find() 메서드로 확인하기

find() 함수는 지정한 값이 처음 등장하는 위치(인덱스)를 반환하며, 값이 존재하지 않으면 -1을 반환합니다. 이 특성을 활용해 if 조건문을 구성하면 부분 문자열이 문자열의 일부인지 손쉽게 확인할 수 있습니다.

예제

Astring = "In cloud 9"
Asub_str = "cloud"
# 주어진 문자열과 부분 문자열
print("Given string: ", Astring)
print("Given substring: ", Asub_str)

if (Astring.find(Asub_str) == -1):
    print("Substring is not a part of the string")
else:
    print("Substring is part of the string")

# 다시 확인
Asub_str = "19"
print("Given substring: ", Asub_str)

if (Astring.find(Asub_str) == -1):
    print("Substring is not a part of the string")
else:
    print("Substring is part of the string")

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given string: In cloud 9
Given substring: cloud
Substring is part of the string
Given substring: 19
Substring is not a part of the string

count() 메서드로 확인하기

count() 메서드는 문자열이나 데이터 컬렉션에서 지정한 값이 등장하는 횟수를 반환합니다. 부분 문자열의 등장 횟수를 계산한 뒤, 그 값이 0보다 크면 부분 문자열이 더 큰 문자열 안에 존재한다고 판단할 수 있습니다.

예제

Astring = "In cloud 9"
Asub_str = "cloud"
# 주어진 문자열과 부분 문자열
print("Given string: ", Astring)
print("Given substring: ", Asub_str)

if (Astring.count(Asub_str) > 0):
    print("Substring is part of the string")
else:
    print("Substring is not a part of the string")

# 다시 확인
Asub_str = "19"
print("Given substring: ", Asub_str)

if (Astring.count(Asub_str) > 0):
    print("Substring is part of the string")
else:
    print("Substring is not a part of the string")

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Given string: In cloud 9
Given substring: cloud
Substring is part of the string
Given substring: 19
Substring is not a part of the string

보너스: in 연산자로 더 간결하게 확인하기

파이썬에서는 in 연산자를 사용하는 것이 가장 파이써닉(Pythonic)하고 가독성이 좋은 방법입니다. 불리언 값을 바로 반환하기 때문에 조건문과 함께 사용하기도 매우 편리합니다.

예제

Astring = "In cloud 9"

print("cloud" in Astring)   # True
print("19" in Astring)      # False

if "cloud" in Astring:
    print("Substring is part of the string")

실행 결과

True
False
Substring is part of the string

마무리

이처럼 find(), count(), in 연산자를 상황에 맞게 활용하면 문자열 내 부분 문자열의 존재 여부를 효율적으로 확인할 수 있습니다. 단순히 존재 여부만 필요하다면 in 연산자를, 위치 정보가 필요하다면 find()를, 등장 횟수까지 알아야 한다면 count()를 사용하는 것이 좋습니다.