Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 문자열이 유효한 숫자인지 확인하는 방법

문자열이 주어졌을 때, 해당 문자열이 유효한 숫자를 나타내는지 확인해야 하는 경우가 자주 있습니다. 예를 들어 "0.2", "abc", "hello", "-2.5", "10" 같은 문자열이 입력으로 주어지면, 결과는 각각 True, False, False, True, True가 되어야 합니다.

해결 접근 방식

이 문제는 프로그래밍 언어에서 제공하는 문자열 파싱(string parsing) 기법을 활용하면 간단하게 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.

  • 문자열을 숫자로 변환을 시도합니다.
  • 변환 과정에서 예외(exception)가 발생하지 않으면 그 문자열은 유효한 숫자입니다.
  • 예외가 발생하면 숫자가 아니라고 판단합니다.

파이썬에서는 내장 함수인 float()를 사용하여 문자열을 실수로 변환할 수 있으며, 변환에 실패하면 ValueError가 발생합니다. 이 특성을 try-except 블록과 함께 활용하면 됩니다. 또한 strip() 메서드로 문자열 앞뒤의 불필요한 공백을 제거하면 더 안정적으로 처리할 수 있습니다.

구현 예제

다음 구현을 통해 더 잘 이해해 보겠습니다.

class Solution(object):
    def isNumber(self, s):
        s = s.strip()
        try:
            s = float(s)
            return True
        except:
            return False

ob = Solution()
print(ob.isNumber("0.2"))
print(ob.isNumber("abc"))
print(ob.isNumber("Hello"))
print(ob.isNumber("-2.5"))
print(ob.isNumber("10"))

입력

"0.2"
"abc"
"Hello"
"-2.5"
"10"

출력

True
False
False
True
True

코드 설명

  • s.strip(): 문자열 양 끝의 공백을 제거하여 " 10 " 같은 입력도 올바르게 처리합니다.
  • float(s): 정수, 소수, 음수 등 다양한 형태의 숫자 문자열을 실수로 변환합니다.
  • try-except: 변환이 성공하면 True를 반환하고, 실패하면 False를 반환합니다.

주의할 점

이 방법은 간편하지만 몇 가지 유의사항이 있습니다. 파이썬의 float()는 "nan", "inf", "Infinity" 같은 특수 문자열도 숫자로 인정하기 때문에, 엄격한 숫자 검증이 필요하다면 추가 처리가 필요합니다. 또한 지수 표기법(예: "1e5")도 유효한 숫자로 판단됩니다. 만약 정수만 허용하고 싶다면 float() 대신 int()를 사용하면 됩니다.