파이썬에서 문자열에 숫자만 포함되어 있는지 확인해야 하는 경우가 종종 있습니다. 가장 간단한 방법은 문자열 클래스(String)에서 제공하는 isdigit() 메서드를 사용하는 것입니다. 이 메서드는 문자열의 모든 문자가 숫자이고 최소 한 글자 이상 존재할 때 True를 반환하며, 그 외의 경우에는 False를 반환합니다.
isdigit() 메서드 사용 예시
print("12345".isdigit())
print("12345a".isdigit())
출력 결과
True False
정규표현식(Regex)으로 확인하기
정규표현식을 활용해서도 동일한 결과를 얻을 수 있습니다. 숫자만 매칭하고 싶다면 "^[0-9]+$" 패턴과 함께 re.match(regex, string) 함수를 호출하면 됩니다.
예시
import re
print(bool(re.match('^[0-9]+$', '123abc')))
print(bool(re.match('^[0-9]+$', '123')))
출력 결과
False True
re.match()는 매칭 결과를 객체 형태로 반환합니다. 따라서 매칭 성공 여부를 직관적으로 확인하려면 bool() 함수를 사용해 불리언(True/False) 값으로 변환해 주어야 합니다.
참고: 음수나 소수점 처리
isdigit() 메서드는 음수 기호(-)나 소수점(.)을 숫자로 인식하지 않기 때문에 "-123" 또는 "1.23" 같은 문자열에는 False를 반환합니다. 이러한 경우까지 처리해야 한다면 정규표현식 패턴을 "^-?[0-9]+$"(음수 허용) 또는 "^-?[0-9]*\.?[0-9]+$"(소수 허용)처럼 확장하여 활용할 수 있습니다.