Steven D'Aprano wrote: > On Wed, 21 Dec 2005 16:39:19 +0100, Daniel Schüle wrote: > >> [EMAIL PROTECTED] wrote: >>> How do I check if a string contains (can be converted to) an int? I >>> want to do one thing if I am parsing and integer, and another if not. >>> >>> /David >>> >> >> others already answered, this is just an idea >> >> >>> def isNumber(n): >> ... import re >> ... if re.match("^[-+]?[0-9]+$", n): >> ... return True >> ... return False > > This is just a thought experiment, right, to see how slow you can make > your Python program run?
Let's leave the thought experiments to the theoretical physicists and compare a regex with an exception-based approach: ~ $ python -m timeit -s'import re; isNumber = re.compile(r"^[-+]\d+$").match' 'isNumber("-123456")' 1000000 loops, best of 3: 1.24 usec per loop ~ $ python -m timeit -s'import re; isNumber = re.compile(r"^[-+]\d+$").match' 'isNumber("-123456x")' 1000000 loops, best of 3: 1.31 usec per loop ~ $ python -m timeit -s'def isNumber(n):' -s' try: int(n); return True' -s ' except ValueError: pass' 'isNumber("-123456")' 1000000 loops, best of 3: 1.26 usec per loop ~ $ python -m timeit -s'def isNumber(n):' -s' try: int(n); return True' -s ' except ValueError: pass' 'isNumber("-123456x")' 100000 loops, best of 3: 10.8 usec per loop A tie for number-strings and regex as a clear winner for non-numbers. Peter -- http://mail.python.org/mailman/listinfo/python-list