개요
Python에서 문자열이 실수(float)로 변환 가능한지 확인해야 하는 경우가 자주 있습니다. 예를 들어 사용자 입력이나 외부 데이터를 처리할 때, 숫자로 변환하기 전에 해당 문자열이 유효한 실수인지 검증하면 오류를 미리 방지할 수 있습니다.
try-except 문으로 직접 변환 시도하기
가장 기본적인 방법은 float() 함수를 사용하여 문자열을 변환하는 것입니다. 변환이 성공하면 실수 값이 반환되고, 실패하면 ValueError가 발생합니다.
try:
print(float('112.15'))
except ValueError:
print('변환할 수 없습니다')
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
112.15
만약 문자열이 실수로 파싱될 수 없다면, ValueError가 발생하여 except 블록의 메시지가 출력됩니다.
isfloat 래퍼 함수 만들기
여러 곳에서 반복적으로 변환 가능 여부를 확인해야 한다면, 불리언(Boolean) 값을 반환하는 래퍼 함수를 만들어 사용하는 것이 편리합니다.
def isfloat(value):
try:
float(value)
return True
except ValueError:
return False
print(isfloat('112.5'))
실행 결과:
True
참고: 다양한 입력 값에 대한 동작
isfloat 함수는 다음과 같은 값들을 처리할 때 유용하게 활용할 수 있습니다.
'3.14','-0.5'→ 일반적인 실수 문자열은 True'10'→ 정수 형태의 문자열도 float로 변환되므로 True'1e-4'→ 지수 표기법도 지원하므로 True'abc','12a'→ 숫자가 아닌 문자가 포함되면 False''→ 빈 문자열은 False
단, 'nan'이나 'inf' 같은 특수 문자열도 float로 변환된다는 점은 유의해야 합니다. 이러한 특수 값까지 걸러내야 한다면 추가적인 검증 로직이 필요합니다.
정리
문자열을 float로 변환할 수 있는지 확인하는 가장 간결하고 안전한 방법은 try-except 구문을 활용하는 것입니다. 필요에 따라 이를 함수로 감싸 재사용하면 코드의 가독성과 유지보수성이 크게 향상됩니다.