2012-09-17 167 views
29

可能重复:
How do I check if a string is a number in Python?
Python - Parse String to Float or Int如何在Python中检查字符串是否有数字值?

例如,我想检查一个字符串,如果它是无法转换为整数(带int()),我怎么能检测?

+0

有已经在这里 http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-in-python – ronak

+0

一个解决方案清晰度,应该'-99'被允许吗? '+123'怎么样?或“1729”(带前导和尾随空格的整数)。 '0x123的'? –

+0

@MarkDickinson - 为什么不能''-99''被允许? – mgilson

回答

37

使用.isdigit() method浮点数:

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

引用文档:

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

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

+2

-1为'a =“0x12”'a.isdigit()'>>>错误 – user1655481

+4

我没有downvote,但''1234“.isdigit()'将尽管'int'会快乐地忽略前面的空间,但返回'False'。 – mgilson

+1

@ user1655481:这也不是数字,它是一个python十六进制文字。 int('0x12')抛出ValueError,除非你指定了一个基地址。 –

28

您可以随时try它:

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

注意,此方法一枝独秀isdigit如果你想知道你是否可以将字符串转换为使用float

+3

Upvote。这是更pythonic只是尝试..except :) – Ohad

相关问题