파이썬에서 문자열이 오직 영문 대문자로만 구성되어 있는지 확인하는 방법은 크게 두 가지가 있습니다. 하나는 내장 문자열 메서드인 isupper()를 사용하는 것이고, 다른 하나는 정규 표현식(regex)을 활용하는 것입니다.
방법 1: isupper() 메서드 사용
isupper()는 문자열의 모든 문자가 대문자이고, 대소문자를 구분할 수 있는 문자가 최소 하나 이상 존재할 때 True를 반환합니다.
예제
print('Hello world'.isupper())
print('HELLO'.isupper())출력 결과
False True
'Hello world'에는 소문자와 공백이 포함되어 있어 False가 반환되고, 모든 알파벳이 대문자인 'HELLO'는 True가 반환됩니다.
방법 2: 정규 표현식 사용
정규 표현식을 사용해서도 동일한 결과를 얻을 수 있습니다. 대문자만 매칭하려면 re.match() 함수에 정규 표현식 "^[A-Z]+$"를 전달하면 됩니다. 여기서 ^는 문자열의 시작, [A-Z]는 영문 대문자 한 글자, +는 하나 이상의 반복, $는 문자열의 끝을 의미합니다.
예제
import re
print(bool(re.match('^[A-Z]+$', '123aAbc')))
print(bool(re.match('^[A-Z]+$', 'ABC')))출력 결과
False True
re.match()는 매칭에 성공하면 Match 객체를, 실패하면 None을 반환하므로 bool()로 감싸면 불리언 값으로 깔끔하게 변환할 수 있습니다. 숫자와 소문자가 섞인 '123aAbc'는 패턴과 일치하지 않아 False, 순수 대문자로만 이루어진 'ABC'는 True가 출력됩니다.
간단한 검증이라면 가독성이 뛰어난 isupper()를 사용하는 것이 좋고, 특정 문자 범위 허용 등 더 세밀한 조건 제어가 필요하다면 정규 표현식을 활용하는 것이 효과적입니다.