ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 문자열이 숫자인지 문자인지 판단하는 법(isdigit(), isalpha(), isalnum(), isdecimal(), isnumeric()
    Programming Language/Python 2022. 8. 8. 22:52

    파이썬에서 문자열 내부에 있는 문자들이 과연 숫자인지, 문자인지 판별하는 방법을 알아보겠다.

     

    1. 문자인지 판단하는 법 [isalpha]

    isalpha()라는 함수를 사용해서 확인할 수 있으며 문자열 내부에 공백/기호/숫자가 존재할 경우 False가 된다.

    s1 = 'ABC'
    s2 = 'hello world'
    s3 = '1a2b'
    s4 = '한글'
    s5 = '한글abc'
    s6 = '한글123'
    s7 = '한글?'
    s8 = '한  글'
    
    print(s1.isalpha())		#True
    print(s2.isalpha())		#False
    print(s3.isalpha())		#False
    print(s4.isalpha())		#True
    print(s5.isalpha())		#True
    print(s6.isalpha())		#False
    print(s7.isalpha())		#False
    print(s8.isalpha())		#False

     

     

    문자열 내부에 오롯이 문자만 있을 땐 True, 숫자, 공백, 기호가 끼어 있을 땐 False가 출력된다.

    한글도 지원해준다.

     

    2. 숫자인지 판단하는 법

    숫자인지 판단하는 종류는 여러 가지 함수가 있다.

     

    (1) isdigit()

    주어진 문자열이 숫자인지 판별하는 함수다. 다만, 3² 같이 지수가 숫자 모양으로 생겼으면 숫자로 판단한다.

    s1 = '1234'
    s2 = '123a'
    s3 = '1 23'
    s4 = '010-1234-5678'
    s5 = '123번'
    s6 = '3²'
    
    print(s1.isdigit())		#True
    print(s2.isdigit())		#False
    print(s3.isdigit())		#False
    print(s4.isdigit())		#False
    print(s5.isdigit())		#False
    print(s6.isdigit())		#True

     

    숫자만 들어있어야 하고 문자, 기호, 공백이 들어있으면 False이다. 

    3²은 숫자 모양으로만 구성되어 있으므로 True이다.

     

    (2) isdecimal()

    isdigit()과 거의 동일하나, 3² 같은 수는 ²를 특수 문자로 판단하고 단순 숫자만 판단한다.

    s1 = '1234'
    s2 = '123a'
    s3 = '1 23'
    s4 = '010-1234-5678'
    s5 = '123번'
    s6 = '3²'
    
    print(s1.isdecimal())		#True
    print(s2.isdecimal())		#False
    print(s3.isdecimal())		#False
    print(s4.isdecimal())		#False
    print(s5.isdecimal())		#False
    print(s6.isdecimal())		#False

    isdigit()과 달리 지수를 문자로 판단해서 False를 리턴하는 모습을 볼 수 있다.

     

    (3) isnumeric()

    지수, 분수까지 모두 다 숫자라고 판단한다.

    s1 = '1234'
    s2 = '123a'
    s3 = '1 23'
    s4 = '010-1234-5678'
    s5 = '123번'
    s6 = '3²'
    s7 = '½'
    
    print(s1.isnumeric())		#True
    print(s2.isnumeric())		#False
    print(s3.isnumeric())		#False
    print(s4.isnumeric())		#False
    print(s5.isnumeric())		#False
    print(s6.isnumeric())		#True
    print(s7.isnumeric())		#True

    3²이나 ½도 모두 숫자라고 판단했다.

    범위를 따져보자면 isnumeric() >> isdigit() >> isdecimal()로 포함관계가 성립하는 듯하다.

     

    3. 문자, 숫자만 있는지 판별하는 법 [isalnum]

    문자, 숫자 외에 공백이나 기호가 있는지 구별해서 알려준다.

    s1 = '1234'
    s2 = '123a'
    s3 = '1 23'
    s4 = '010-1234-5678'
    s5 = '123번'
    s6 = '3²'
    s7 = '½'
    
    print(s1.isalnum())		#True
    print(s2.isalnum())		#True
    print(s3.isalnum())		#False
    print(s4.isalnum())		#False
    print(s5.isalnum())		#True
    print(s6.isalnum())		#True
    print(s7.isalnum())		#True

    isnumeric처럼 지수, 분수도 숫자로 여기는 범위에서 문자와 숫자로만 구성된 문자만 True를 리턴한다.

     

     

    4. 마지막

    이외에도 다양한 is내장함수가 있지만 기회가 될 때 차근차근 포스팅해나가도록 하겠다.

     

     

    ※ 틀린 내용이 있을 수 있습니다. 지적해주시면 언제든지 수정할 수 있도록 하겠습니다.

    댓글

Designed by Tistory.