[Python] 파이썬 isdigit() 함수로 문자열 숫자 판별하는 방법

안녕하세요. BlockDMask 입니다.

오늘은 파이썬에서 문자열이 숫자로만 이루어졌는지 확인하는 isdigit() 함수에 대해 자세히 알아보겠습니다.

문자열 처리할 때 "이 값이 숫자인지"를 확인하는 건 매우 자주 사용하는 로직입니다. 특히 사용자 입력값 검증, 파일 파싱, 웹 데이터 수집 시 필수로 활용됩니다.

목차



1. 파이썬 isdigit() 함수 설명

isdigit()는 문자열이 0~9 숫자로만 구성되어 있는지 확인하는 문자열 메서드입니다.

str.isdigit()

기본 원리:

  • 모든 문자가 숫자(0~9) → True
  • 문자가 하나라도 섞이면 → False
  • 음수 부호(-), 소수점(.)은 숫자로 인정하지 않음 → False
  • 유니코드 특수 숫자 (분수, 지수 등)는 일부 True

보통 입력값이 순수 양의 정수인지 확인할 때 가장 많이 사용합니다.



2. isdigit()의 한계와 주의사항

  • 소수판별 불가: "3.14".isdigit() → False
  • 음수판별 불가: "-7".isdigit() → False
  • 유니코드 숫자 주의: "⅔".isdigit() → True (실수할 수 있음)

따라서 실무에서 isdigit()만으로 숫자판별하기엔 한계가 있으므로 다음과 같이 보완할 수 있습니다:

def is_integer(s):
    try:
        int(s)
        return True
    except ValueError:
        return False

이렇게 하면 음수, 소수점까지 정수 여부를 안전하게 판단 가능.



3. 파이썬 isdigit() 실전 예제

a = "BlockDMask"    # 문자로만
b = "1234Blog"      # 숫자+문자 혼합
c = "131231"        # 순수 숫자
d = "-234"          # 음수
e = "1.23"          # 소수점
f = "3²"            # 지수기호 포함
g = "⅔"             # 분수 유니코드
h = "0"             # 0
i = "0123"          # 0으로 시작하는 숫자

# str.isdigit("문자열")
print(f"str.isdigit('{a}') : {str.isdigit(a)}")   # str.isdigit('BlockDMask') : False
print(f"str.isdigit('{b}') : {str.isdigit(b)}")   # str.isdigit('1234Blog') : False
print(f"str.isdigit('{c}') : {str.isdigit(c)}")   # str.isdigit('131231') : True
print(f"str.isdigit('{d}') : {str.isdigit(d)}")   # str.isdigit('-234') : False
print(f"str.isdigit('{e}') : {str.isdigit(e)}")   # str.isdigit('1.23') : False
print(f"str.isdigit('{f}') : {str.isdigit(f)}")   # str.isdigit('3²') : True
print(f"str.isdigit('{g}') : {str.isdigit(g)}")   # str.isdigit('⅔') : True
print(f"str.isdigit('{h}') : {str.isdigit(h)}")   # str.isdigit('0') : True
print(f"str.isdigit('{i}') : {str.isdigit(i)}")   # str.isdigit('0123') : True

결과 요약:

  • 문자 섞임 → False
  • 순수 숫자 문자열 → True
  • 음수, 소수점 포함 → False
  • 유니코드 일부 특수 숫자 → True 가능성 존재


4. isdigit(), isdecimal(), isnumeric() 차이

메서드 허용 범위 예시
isdecimal() 0~9 십진수만 "0123" → True
isdigit() 십진수 + 일부 유니코드 숫자 "⅔" → True
isnumeric() 더 넓은 수학적 숫자 지원 "二" (중국어 숫자) → True

실제 상황에 맞게 적절한 메서드를 선택해야 합니다.



이상으로 파이썬의 isdigit() 함수 사용법과 주의사항, 다른 메서드와의 차이까지 자세히 알아보았습니다.
감사합니다!

댓글

이 블로그의 인기 게시물

[Windows] 윈도우 CMD로 재부팅, 종료, 시간 설정하는 방법 (shutdown 명령어 정리)

[Python] 파이썬 주석 사용법 (한 줄 주석, 여러 줄 주석, 단축키, 들여쓰기 주의사항)

[Python] 파이썬에서 None, null, is None 차이 정리