본문 바로가기
PROGRAMMING/PYTHON

[Python] 문자열의 숫자 판단 - isdecimal(), isdigit(), isnumeric()

by 안녕나는현서 2022. 1. 15.
728x90

isdecimal(), isdigit(), isnumeric()

  • 문자열 내의 문자가 숫자인지 판단하는 함수

 

str.isdecimal()

  • 문자열 내의 모든 문자가 십진수 문자이고, 적어도 하나의 문자가 존재하는 경우 True / 그렇지 않으면 False 반환
  • 십진수 문자 : 형식적으로 십진수 문자는 유니코드 일반 범주 《Nd》 에 속하는 문자
  • int형으로 변환 가능한 숫자만 True (특수문자 해당안됨)
string = '4'
print(string.isdecimal())  # True
print(string.isdigit())    # True
print(string.isnumeric())  # True

 

str.isdigit() 

  • 문자열 내의 모든 문자가 digit이고, 적어도 하나의 문자가 존재하는 경우 True / 그렇지 않으면 False 반환
  • digit : 십진수 문자, 호환성 위 첨자 숫자와 같은 특수 처리가 필요한 숫자 포함
            속성값이 Numeric_Type=Digit 또는 Numeric_Type=Decimal
  • 숫자 모양으로 생겼으면 True (거듭제곱의 지수 등)
string = '4²'
print(string.isdecimal())  # False
print(string.isdigit())    # True
print(string.isnumeric())  # True

 

str.isnumeric()

  • 문자열 내의 모든 문자가 숫자이고, 적어도 하나의 문자가 존재하는 경우 True / 그렇지 않으면 False 반환
  • 숫자 : digit, 유니코드 숫자 값 속성을 갖는 모든 문자 포함
            속성 값이 Numeric_Type=Digit, Numeric_Type=Decimal, Numeric_Type=Numeric
  • 제곱근, 분수, 거듭제곱 특수문자 등의 특수문자도 True 반환
string = '¼'
print(string.isdecimal())  # False
print(string.isdigit())    # False
print(string.isnumeric())  # True

 

▶ 결론 : isdecimal() < isdigit() < isnumeric() 순으로 True를 반환하는 범위가 크다!

728x90

댓글