파이썬에서 스트링이 숫자(정수+실수 합쳐서)인지 어떻게 확인할 수 있을까요?

isdigit()을 쓰면 정수만 True가 되고 실수형은 False가 떠요 isfloat()같은 건 없는것 같던데 어떡하죠?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    예외처리를 써보세요.

    간단하게 다음과 같이 쓸 수 있습니다

    # coding=utf-8
    def is_number(num):
        try:
            float(num)
            return True #num을 float으로 변환할 수 있는 경우
        except ValueError: #num을 float으로 변환할 수 없는 경우
            return False
    
    is_number("3.24242424")
    is_number("5")
    

    다만, 위의 방법은 is_number("NaN") 에서는 True를 return 하므로 이런 예외도 다 False로 처리하고 싶다면 다음과 같이 사용하세요

    # coding=utf-8
    def is_number(num):
        try:
            judge = str(float(num))
            return False if(judge=='nan' or judge=='inf' or judge =='-inf') else True
        except(ValueError, type): #num을 float으로 변환 할 수 없는 경우
            return False
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.