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