Python

isdecimal VS isnumeric VS isdigit

til_t 2021. 1. 20. 16:44

예시)

x = '3²'
print(x.isdecimal())
print(x.isnumeric())
print(x.isdigit())
print()

y = '3'
print(y.isdecimal())
print(y.isnumeric())
print(y.isdigit())

z = '3.3'
print(z.isdecimal())
print(z.isnumeric())
print(z.isdigit())

출력 결과

False
True
True
True
True
True
False
False
False

- isdigit()

isdigit()은 거듭제곱, 숫자 특수문자까지 True라고 허용하는 듯

 

- isnumeric()

isnumeric() 또한 분수, 숫자의 특수문자까지 True라고 허용한다.

 

- isdecimal()

isdecimal()은 int로 변환 가능한 문자만 True라고 허용한다. 즉, 특수문자, 거듭제곱으로 표현된 문자열 수는 False를 리턴한다.

 

즉, int로 변환 가능한 문자열을 판별하기 위해선 isdecimal()을 이용하고, 그렇지 않은 특수문자, 루트 같은 경우의 문자열 또한 숫자로 이루어진 문자열이라고 판별하고 싶으면 isnumeric(), isdecimal()을 혼용해서 쓰면 될 것 같다.

셋 다 실수는 False로 리턴하는 듯하다.