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

파이썬에서 문자열이 접미사 목록 중 하나로 끝나는지 확인하는 방법

endswith() 메서드로 여러 개의 접미사 확인하기

파이썬의 문자열(String) 클래스에는 endswith(tuple) 메서드가 내장되어 있습니다. 이 메서드는 확인하고자 하는 문자열들을 튜플(tuple) 형태로 인자로 받아, 해당 문자열 객체가 그중 하나라도 일치하는 접미사로 끝나는지 판별합니다.

다음은 실제 사용 예시입니다.

string = 'core java'
print(string.endswith(('txt', 'xml', 'java', 'orld')))

실행 결과

True

위 예제에서 'core java' 문자열은 튜플에 포함된 'java'로 끝나기 때문에 결과가 True로 출력됩니다. 만약 어느 접미사와도 일치하지 않으면 False를 반환합니다.

정규표현식(re.search)을 활용한 방법

접미사 목록과 비교하는 또 다른 방법으로는 re 모듈(정규표현식)의 re.search() 함수를 사용할 수 있습니다. 정규표현식에서 $ 기호는 행의 끝을 의미하며, 여러 개의 접미사는 소괄호로 묶고 |(OR 연산자) 기호로 구분하여 표현합니다.

예시 코드는 다음과 같습니다.

import re
string = 'core java'
print(bool(re.search('(java|xml|py|orld)$', string)))
print(bool(re.search('(java|xml|py|orld)$', 'core java')))
print(bool(re.search('(java|xml|py)$', 'Hello world')))

실행 결과

True
True
False

세 번째 예제에서 'Hello world'world로 끝나지만, 검색 패턴에는 py, java, xml만 포함되어 있으므로 False가 반환됩니다. 만약 패턴에 orld가 포함되어 있다면 True가 됩니다.

bool() 변환이 필요한 이유

re.search() 함수는 매칭 결과를 매치 객체(Match Object)로 반환합니다. 일치하는 부분이 없으면 None을 반환하기 때문에, 존재 여부를 명확하게 확인하려면 bool() 함수로 변환하여 불리언 값(True/False)을 얻어야 합니다.

두 방법 비교 요약

  • endswith(튜플): 간단하고 직관적이며, 대소문자 구분 등 옵션 지정이 가능해 일반적인 상황에서 권장됩니다.
  • re.search(): 정규표현식의 유연성이 필요한 경우, 예를 들어 대소문자 무시, 복잡한 패턴 조합 등에 유용합니다.

대부분의 경우 endswith() 메서드만으로 충분하지만, 더 복잡한 조건의 패턴 매칭이 필요하다면 정규표현식을 활용하는 것이 좋습니다.