파이썬으로 데이터 분석을 하다 보면, 주어진 부분 문자열(서브스트링)이 더 큰 문자열 안에 포함되어 있는지 확인해야 하는 경우가 자주 발생합니다. 이 글에서는 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()를 사용하는 것이 좋습니다.