세 가지 함수 모두 문자열이 숫자로 이루어져있는지 검사하는 함수다.
하지만, 구체적인 결과는 다른데,
먼저
a = '12345678'
print(a.isdigit())
print(a.isdecimal())
print(a.isnumeric())
Python
복사
위의 경우처럼 평범한 숫자 문자열일 경우
세 개의 명령어 모두 True 를 반환한다.
하지만, 만약 3^2 와 같은 경우
a = '3²'
print(a.isdigit())
print(a.isdecimal())
print(a.isnumeric())
Python
복사
다음과 같이 결과가 다르게 나온다.
원인은 다음과 같다.
•
isdigit() 은 글자가 ‘숫자’ 모양으로 생겼으면 무조건 True 를 반환한다.
•
isdecimal() 은 글자가 int형으로 변환이 가능한지 알아내는 함수이기 때문에, 특수문자의 숫자모양을 숫자로 치지 않는다.
•
isnumeric() 은 숫자값 표현에 해당하는 문자열까지만 인정한다. 제곱근, 분수, 거듭제곱은 True 로 반환한다.