Python – Check for float String

Python strings consist of characters, and we often need to verify if a string represents a valid float value. This is useful for input validation, data parsing, and type checking. Python provides several approaches to check if a string contains a float value.

Method 1: Using try-except Block

This approach attempts to convert the string to a float and catches any ValueError exceptions ?

def is_float_string(text):
    try:
        # First check if it's an integer
        int(text)
        return False  # It's an integer, not a float
    except ValueError:
        pass
    
    try:
        # Try to convert to float
        float(text)
        return True
    except ValueError:
        return False

# Test with different values
test_values = ["38.90", "42", "3.14e10", "hello", "-7.5"]

for value in test_values:
    result = is_float_string(value)
    print(f"'{value}' is float: {result}")
'38.90' is float: True
'42' is float: False
'3.14e10' is float: True
'hello' is float: False
'-7.5' is float: True

Method 2: Using Regular Expression

Regular expressions can match float patterns including scientific notation ?

import re

def is_float_string(text):
    # Pattern matches: optional sign, digits, optional decimal point and digits, optional exponent
    pattern = r'^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$'
    
    if re.match(pattern, text):
        # Must contain a decimal point to be a float
        return '.' in text or 'e' in text.lower()
    return False

# Test with different values
test_values = ["38.90", "42", "3.14e10", "hello", "-7.5", "1e5"]

for value in test_values:
    result = is_float_string(value)
    print(f"'{value}' is float: {result}")
'38.90' is float: True
'42' is float: False
'3.14e10' is float: True
'hello' is float: False
'-7.5' is float: True
'1e5' is float: True

Method 3: Using isdigit() Method

This approach first checks if the string contains only digits, then attempts float conversion ?

def is_float_string(text):
    # If it's all digits, it's an integer, not a float
    if text.isdigit():
        return False
    
    try:
        float(text)
        return True
    except ValueError:
        return False

# Test with different values
test_values = ["38.90", "42", "3.14", "hello", "-7.5"]

for value in test_values:
    result = is_float_string(value)
    print(f"'{value}' is float: {result}")
'38.90' is float: True
'42' is float: False
'3.14' is float: True
'hello' is float: False
'-7.5' is float: True

Comparison

Method Handles Scientific Notation Performance Best For
try-except Yes Fast Simple validation
Regular Expression Yes Moderate Pattern matching
isdigit() Yes Fast Basic float detection

Conclusion

The try-except method is the most reliable approach for checking float strings as it leverages Python's built-in float parsing. Use regular expressions when you need specific pattern validation, and the isdigit() method for simple cases where you want to distinguish between integers and floats.

Updated on: 2026-03-27T13:40:35+05:30

876 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements