Checking if a string can be converted to float in Python

Checking if a string can be converted to float in Python

I would just use..

try:
    float(element)
except ValueError:
    print Not a float

..its simple, and it works. Note that it will still throw OverflowError if element is e.g. 1<<1024.

Another option would be a regular expression:

import re
if re.match(r^-?d+(?:.d+)$, element) is None:
    print Not float

Python method to check for float:

def is_float(element: Any) -> bool:
    try:
        float(element)
        return True
    except ValueError:
        return False

Always do unit testing. What is, and is not a float may surprise you:

Command to parse                        Is it a float?  Comment
--------------------------------------  --------------- ------------
print(isfloat())                      False
print(isfloat(1234567))               True 
print(isfloat(NaN))                   True            nan is also float
print(isfloat(NaNananana BATMAN))     False
print(isfloat(123.456))               True
print(isfloat(123.E4))                True
print(isfloat(.1))                    True
print(isfloat(1,234))                 False
print(isfloat(NULL))                  False           case insensitive
print(isfloat(,1))                    False           
print(isfloat(123.EE4))               False           
print(isfloat(6.523537535629999e-07)) True
print(isfloat(6e777777))              True            This is same as Inf
print(isfloat(-iNF))                  True
print(isfloat(1.797693e+308))         True
print(isfloat(infinity))              True
print(isfloat(infinity and BEYOND))   False
print(isfloat(12.34.56))              False           Two dots not allowed.
print(isfloat(#56))                   False
print(isfloat(56%))                   False
print(isfloat(0E0))                   True
print(isfloat(x86E0))                 False
print(isfloat(86-5))                  False
print(isfloat(True))                  False           Boolean is not a float.   
print(isfloat(True))                    True            Boolean is a float
print(isfloat(+1e1^5))                False
print(isfloat(+1e1))                  True
print(isfloat(+1e1.3))                False
print(isfloat(+1.3P1))                False
print(isfloat(-+1))                   False
print(isfloat((1)))                   False           brackets not interpreted

Checking if a string can be converted to float in Python

1.43.replace(.,,1).isdigit()

which will return true only if there is one or no . in the string of digits.

1.4.3.replace(.,,1).isdigit()

will return false

1.ww.replace(.,,1).isdigit()

will return false

Leave a Reply

Your email address will not be published.