Pythonic way to determine if a string is a number

python at bdurham.com python at bdurham.com
Sun Feb 15 12:46:56 EST 2009


What's the Pythonic way to determine if a string is a number? By
number I mean a valid integer or float.

I searched the string and cMath libraries for a similar function
without success. I can think of at least 3 or 4 ways to build my
own function.

Here's what I came up with as a proof-of-concept. Are there
'better' ways to perform this type of test?

Thanks,
Malcolm

<code>
def isnumber( input ):
    try:
        if '.' in input:
            num = float( input )
        else:
            num = int( input )
        return True

    except ValueError:
        return False

if __name__ == '__main__':
    tests = """
        12
        -12
        -12.34
        .0
        .
        1 2 3
        1 . 2
        just text
    """

    for test in tests.split( '\n' ):
        print 'test (%0s), isnumber: %1s' % \
          ( test.strip(), isnumber( test ) )

</code>



More information about the Python-list mailing list