45

For example, I want to check a string and if it is not convertible to integer(with int()), how can I detect that?

Karl Knechtel
  • 62,466
  • 11
  • 102
  • 153
Figen Güngör
  • 12,169
  • 14
  • 66
  • 108

2 Answers2

49

Use the .isdigit() method:

>>> '123'.isdigit()
True
>>> '1a23'.isdigit()
False

Quoting the documentation:

Return true if all characters in the string are digits and there is at least one character, false otherwise.

For unicode strings or Python 3 strings, you'll need to use a more precise definition and use the unicode.isdecimal() / str.isdecimal() instead; not all Unicode digits are interpretable as decimal numbers. U+00B2 SUPERSCRIPT 2 is a digit, but not a decimal, for example.

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
33

You can always try it:

try:
   a = int(yourstring)
except ValueError:
   print "can't convert"

Note that this method outshines isdigit if you want to know if you can convert a string to a floating point number using float

mgilson
  • 300,191
  • 65
  • 633
  • 696