콘텐츠로 건너뛰기

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

[

파이썬 문자열이 다른 문자열을 포함하는지 확인하는 방법

만약 문자열이 다른 문자열을 포함하는지 확인해야 한다면, 파이썬의 멤버십 연산자 in을 사용하세요. 파이썬에서는 이 방법이 문자열 내에 부분 문자열이 존재하는지 확인하는 권장된 방법입니다:

raw_file_content = """Hi there and welcome.
This is a special hidden file with a SECRET secret.
I don't want to tell you The Secret,
but I do want to secretly tell you that I have one."""
"secret" in raw_file_content

위 예시에서는 in 멤버십 연산자를 사용하여 부분 문자열이 문자열 내에 있는지 빠르고 읽기 쉬운 방법으로 확인합니다. 이 코드 라인은 거의 영어처럼 읽히는 것을 알 수 있습니다.

"secret" not in raw_file_content

위 예시에서 "secret" 부분 문자열이 raw_file_content 문자열 내에 존재하기 때문에 not in 연산자는 False를 반환합니다.

  • 만약 파이썬이 부분 문자열을 찾았다면 True를 반환합니다.
  • 만약 파이썬이 부분 문자열을 찾지 못했다면 False를 반환합니다.
if "secret" in raw_file_content:
print("찾았습니다!")

위 코드 스니펫에서 멤버십 연산자를 사용하여 raw_file_content에서 "secret"이 부분 문자열인지 확인합니다. 만약 포함되어 있다면, 터미널에 메시지를 출력합니다.


대소문자 구분을 없애고 일반화하기

파이썬의 문자열 메서드 중 하나로, 멤버십 연산을 일반화하는 방법을 알아봅시다. 만약 대소문자를 구분하지 않고 특정 부분 문자열을 찾고 싶다면, lower() 메서드를 사용하세요:

raw_file_content = """Hi there and welcome.
This is a special hidden file with a SECRET secret.
I don't want to tell you The Secret,
but I do want to secretly tell you that I have one."""
"secret" in raw_file_content.lower()

위 예시에서 lower() 메서드를 사용하여 raw_file_content의 모든 문자를 소문자로 변환합니다. 그러면 대소문자 구분 없이 "secret" 부분 문자열을 찾을 수 있습니다.


부분 문자열에 대해 더 알아보기

가끔씩 부분 문자열을 찾는 것이 목표가 아니라, 주어진 문자열의 위치나 개수에 관심이 있을 수 있습니다. 이럴 때는 파이썬의 문자열 메서드 중 일부를 사용하여 원하는 결과를 얻을 수 있습니다.

주어진 문자열(raw_file_content) 내에서 부분 문자열("secret")의 첫 번째 위치를 찾아보겠습니다. 이를 위해 find() 메서드를 사용할 수 있습니다:

raw_file_content = """Hi there and welcome.
This is a special hidden file with a SECRET secret.
I don't want to tell you The Secret,
but I do want to secretly tell you that I have one."""
raw_file_content.find("secret")

find() 메서드는 첫 번째로 발견된 부분 문자열의 시작 인덱스를 반환합니다. 만약 찾는 부분 문자열이 존재하지 않는다면, -1을 반환합니다.

또는 주어진 문자열 내에서 부분 문자열이 몇 번 등장하는지 확인할 수도 있습니다. 이럴 때는 count() 메서드를 사용할 수 있습니다:

raw_file_content = """Hi there and welcome.
This is a special hidden file with a SECRET secret.
I don't want to tell you The Secret,
but I do want to secretly tell you that I have one."""
raw_file_content.count("secret")

count() 메서드는 부분 문자열이 주어진 문자열에서 등장하는 횟수를 반환합니다.


정규 표현식을 사용하여 조건에 따라 부분 문자열 찾기

문자열을 더욱 복잡한 조건으로 걸러내고 싶다면, 정규 표현식(regular expression)을 사용할 수 있습니다.

정규 표현식을 사용하여 주어진 문자열 내에서 특정 패턴과 일치하는 부분 문자열을 찾을 수 있습니다. 이것은 특히 복잡한 패턴을 다루거나 여러 문자열을 동시에 검색해야 하는 경우에 유용합니다.

다음 예시에서는 정규 표현식 패턴을 사용하여 "secret" 다음에 문자와 숫자가 하나 이상 있는 부분 문자열을 찾아 보겠습니다:

import re
raw_file_content = """Hi there and welcome.
This is a special hidden file with a SECRET secret.
I don't want to tell you The Secret,
but I do want to secretly tell you that I have one.
Here is another secret: 42"""
re.findall(r"secret\w+", raw_file_content)

위 코드에서는 re 모듈을 사용하여 정규 표현식 패턴을 정의하고, findall() 함수를 사용하여 부분 문자열을 모두 찾습니다.


pandas DataFrame 열에서 부분 문자열 찾기

판다스(pandas)는 데이터 처리 및 분석을 위한 파이썬 패키지입니다. 만약 텍스트 데이터가 포함된 CSV 파일과 작업하고 있다면, 특정 열 내에서 부분 문자열을 찾아야 할 때가 있습니다. 이렇게 할 수 있는 방법 중 하나는 앞에서 배운 방법을 사용하는 것이지만, 만약 탭ular data(테이블 형식의 데이터) 를 다루고 있다면, CSV 파일을 판다스 DataFrame으로 불러오고 판다스에서 부분 문자열을 찾는 방법을 사용하는 것이 좋습니다.

다음 예시에서는 CSV 파일로부터 데이터를 로드하고, 판다스 DataFrame 열 내에서 부분 문자열을 찾는 방법을 알아보겠습니다:

import pandas as pd
data = {
"id": [1, 2, 3, 4, 5],
"name": ["Alice", "Bob", "Charlie", "David", "Eve"],
"message": [
"I love apples and oranges",
"I like pizza",
"I like chocolate cake",
"I enjoy hiking in the mountains",
"I love going to the beach"
]
}
df = pd.DataFrame(data)
filtered_df = df[df["message"].str.contains("love")]

위 코드에서는 판다스(pd)를 가져온 후, 데이터를 딕셔너리 형태로 정의하여 DataFrame을 생성합니다. 그런 다음 str.contains() 메서드를 사용하여 부분 문자열을 포함한 행들을 필터링합니다.


정리

이 튜토리얼에서는 파이썬에서 문자열이 다른 문자열을 포함하는지 확인하는 가장 파이썬 답게 사용하는 방법인 멤버십 연산자 in에 대해 알아보았습니다. 또한 대소문자 구분 없이 문자열을 포함하거나, 부분 문자열의 위치를 찾을 수 있는 다른 방법들에 대해서도 살펴보았습니다. 마지막으로, 판다스 DataFrame 열에서 부분 문자열을 찾는 방법을 알아봤습니다.


자세한 내용

만약 더 자세한 내용을 원한다면, 다음 페이지에 있는 예시 코드 등을 확인할 수 있습니다: