Mar*_*ers 46

使用.isdigit()方法:

>>> '123'.isdigit()
True
>>> '1a23'.isdigit()
False
Run Code Online (Sandbox Code Playgroud)

引用文档:

如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false.

对于unicode字符串或Python 3字符串,您需要使用更精确的定义并使用unicode.isdecimal()/ str.isdecimal()而不是; 并非所有Unicode数字都可解释为十进制数字.U + 00B2 SUPERSCRIPT 2是一个数字,但不是小数,例如.

  • 我没有downvote,但是"1234".isdigit()`将返回`False`,即使`int`会很乐意忽略前面的空格. (5认同)
  • -1表示`a ="0x12"`a.isdigit()`>>>错误 (2认同)
  • @ user1655481:也不是数字,它是python十六进制文字。除非您指定基数,否则int('0x12')`会引发ValueError。 (2认同)

mgi*_*son 32

你可以随时try:

try:
   a = int(yourstring)
except ValueError:
   print "can't convert"
Run Code Online (Sandbox Code Playgroud)

请注意,isdigit如果您想知道是否可以使用将字符串转换为浮点数,则此方法会更胜一筹float

  • 给予好评.只是试试..更加pythonic :) (4认同)