[Python] isdigit(), isdecimal(), isnumeric() 차이

PhilAI·2023년 7월 30일
1

코테를 풀다가 비슷한 함수들을 헷갈릴 때가 많아서 한번 정리하면 좋겠다 싶었습니다.
옹늘은 숫자판별 함수인 isdigit(), isdecimal(), isnumeric()을 간단히 설명하고 예시를 통해 알아 보도록 하겠습니다!

isdecimal()

  • isdecimal() 함수는 문자열이 10진수 숫자로만 이루어져 있는지를 판별합니다.
  • 오직 0부터 9까지의 숫자들만을 인정하며, 소수점, 음수 부호, 혹은 다른 유니코드 숫자들은 허용되지 않습니다.
num_str = "12345"
print(num_str.isdecimal())  # True

float_str = "123.45"
print(float_str.isdecimal())  # False

negative_num_str = "-123"
print(negative_num_str.isdecimal())  # False

unicode_num_str = "Ⅳ"  # 로마 숫자 4 (IV)
print(unicode_num_str.isdecimal())  # False

isdigit()

  • isdigit() 함수는 문자열이 유니코드 숫자로만 이루어져 있는지를 판별합니다.
  • 숫자뿐만 아니라 윗첨자(슈퍼스크립트)와 아래첨자(서브스크립트)에 해당하는 숫자도 인정하지만, 소수점과 음수 부호는 여전히 허용되지 않습니다.
num_str = "12345"
print(num_str.isdigit())  # True

float_str = "123.45"
print(float_str.isdigit())  # False

negative_num_str = "-123"
print(negative_num_str.isdigit())  # False

unicode_num_str = "Ⅳ"  # 로마 숫자 4 (IV)
print(unicode_num_str.isdigit())  # True

isnumeric()

  • isnumeric() 함수는 숫자로 인정되는 유니코드 문자들을 모두 허용합니다.
  • 이 함수는 isdecimal()과 isdigit()에서 허용되지 않는 분수, 로마 숫자, 거듭제곱 형태 등을 숫자로 간주합니다.
num_str = "12345"
print(num_str.isnumeric())  # True

float_str = "123.45"
print(float_str.isnumeric())  # False

negative_num_str = "-123"
print(negative_num_str.isnumeric())  # False

unicode_num_str = "Ⅳ"  # 로마 숫자 4 (IV)
print(unicode_num_str.isnumeric())  # True

sqrt_str = "√25"  # 제곱근 표시 (√) 및 숫자
print(sqrt_str.isnumeric())  # True

fraction_str = "½"  # 분수 1/2
print(fraction_str.isnumeric())  # True

exponent_str = "²"  # 제곱 표시 (²)
print(exponent_str.isnumeric())  # True
profile
철학과가 도전하는 Big Data, AI

0개의 댓글