[Python] 파이썬 isdigit() 함수로 문자열 숫자 판별하는 방법
안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 문자열이 숫자로만 이루어졌는지 확인하는 isdigit() 함수에 대해 자세히 알아보겠습니다.
문자열 처리할 때 "이 값이 숫자인지"를 확인하는 건 매우 자주 사용하는 로직입니다. 특히 사용자 입력값 검증, 파일 파싱, 웹 데이터 수집 시 필수로 활용됩니다.
목차
- 1. 파이썬 isdigit() 함수 설명
- 2. isdigit()의 한계와 주의사항
- 3. 파이썬 isdigit() 실전 예제
- 4. isdigit(), isdecimal(), isnumeric() 차이
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() 함수 사용법과 주의사항, 다른 메서드와의 차이까지 자세히 알아보았습니다.
감사합니다!
댓글
댓글 쓰기