The present recipe shows a function to check whether or not its argument is consistent with standard numerical formats: integer, floating point, scientific, or engineering.
Python, 8 lines
1 2 3 4 5 6 7 8
def is_a_number(x): """This function determines if its argument, x, is in the format of a number. It can be number can be in integer, floating point, scientific, or engineering format. The function returns '1' if the argument is formattted like a number, and '0' otherwise.""" import re num_re = re.compile(r'^[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][-+]?[0-9]+)?$') return str(re.match(num_re, x))) != 'None'
Often it is necessary to validate an entry as being a number before passing into another program or script. At the heart of the function is a regular expression consistent with numbers in integer, floating point, scientific, or engineering format.
Efficiency... Would this not be more efficient if it were implemented as a callable class?
That way, you wouldn't have to re-build the re.compile() object each time you call the function.
Here is the sample code... I don't know why the code won't print out here. --------
class Is_A_Number :
End of the class
is_a_number = Is_A_Number()