출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

isdecimal(), isdigit(), isnumeric()에 대하여

category Python 공부하기 2020. 11. 25. 16:59

이번에는 isdecimal(), isdigit(), isnumeric() 에 대해서 간략하게 알아보려고 한다.

사실 이 세가지는 모두 알고리즘 풀이나 코딩 테스트 문제에서 흔하게 접하면서 알아볼 수 있는 함수들이나, 이들에 대한 명확한 차이를 기록하고자 포스팅을 한다. 간략하게 보여주자면 이 셋의 관계는 다음과 같이 나타낼 수 있다:

isdecimal() <= isdigit() <= isnumeric()

조금 더 정확하게 설명하자면 다음과 같다:

>>> a = '3²'
>>> print(a.isdecimal())
>>> print(a.isdigit())
>>> print(a.isnumeric())
...
>>> False
>>> True
>>> True


isdecimal()의 경우는 이를 숫자로 취급하지 않고, isdigit()은 이를 숫자로 취급한다. 이유는 'isdigit()'은 단일문자가 숫자로만 이루어졌으면 숫자로 취급을 하지만, isdecimal()의 경우, 3의제곱으로 나타난 특수 문자는 숫자로 취급하지 않기 때문이다. 그렇다면 다음의 예시를 보자:

>>> a = '½'
>>> print(a.isdecimal())
>>> print(a.isdigit())
>>> print(a.isnumeric())
...
>>> False
>>> False
>>> True


이번에는 isnumeric()a에 대하여 True를 출력하지만, 나머지는 모두 False를 출력하는 것을 볼 수 있다. 이유는 isnumeric()의 경우, 숫자값으로 나타난 문자이면 어떤 방식이던 인정한다. 거듭제곱, 제곱근, 분수 등등 모두 인정을 하는 모습을 볼 수 있다.