Sunday 24 December 2017

python - How do I check if a string is a number (float)?

itemprop="text">

What is the best possible way to check
if a string can be represented as a number in Python?



The function I currently have right now
is:




def
is_number(s):
try:
float(s)
return True

except ValueError:
return
False


Which, not only
is ugly and slow, seems clunky. However I haven't found a better method because calling
float in the main function is even worse.



Answer







Which, not only is ugly and
slow




I'd dispute
both.



A regex or other string parsing method
would be uglier and slower.



I'm not sure that
anything much could be faster than the above. It calls the function and returns.
Try/Catch doesn't introduce much overhead because the most common exception is caught
without an extensive search of stack
frames.




The issue is that any numeric
conversion function has two kinds of
results




  • A number, if the
    number is valid

  • A status code (e.g., via errno) or
    exception to show that no valid number could be
    parsed.



C (as an example)
hacks around this a number of ways. Python lays it out clearly and
explicitly.



I think your code for doing this is
perfect.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...