可能重复:
How do I check if a string is a number in Python?
Python - Parse String to Float or Int如何在Python中检查字符串是否有数字值?
例如,我想检查一个字符串,如果它是无法转换为整数(带int()
),我怎么能检测?
可能重复:
How do I check if a string is a number in Python?
Python - Parse String to Float or Int如何在Python中检查字符串是否有数字值?
例如,我想检查一个字符串,如果它是无法转换为整数(带int()
),我怎么能检测?
使用.isdigit()
method浮点数:
>>> '123'.isdigit()
True
>>> '1a23'.isdigit()
False
引用文档:
如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false。
对于unicode
字符串或Python 3串,你需要使用一个更精确的定义和使用unicode.isdecimal()
/str.isdecimal()
代替;并非所有的Unicode数字都可以解释为十进制数字。例如,U+00B2 SUPERSCRIPT 2是一个数字,但不是小数。
-1为'a =“0x12”'a.isdigit()'>>>错误 – user1655481
我没有downvote,但''1234“.isdigit()'将尽管'int'会快乐地忽略前面的空间,但返回'False'。 – mgilson
@ user1655481:这也不是数字,它是一个python十六进制文字。 int('0x12')抛出ValueError,除非你指定了一个基地址。 –
您可以随时try
它:
try:
a = int(yourstring)
except ValueError:
print "can't convert"
注意,此方法一枝独秀isdigit
如果你想知道你是否可以将字符串转换为使用float
Upvote。这是更pythonic只是尝试..except :) – Ohad
有已经在这里 http://stackoverflow.com/questions/354038/how-do-i-check-if-a-string-is-a-number-in-python – ronak
一个解决方案清晰度,应该'-99'被允许吗? '+123'怎么样?或“1729”(带前导和尾随空格的整数)。 '0x123的'? –
@MarkDickinson - 为什么不能''-99''被允许? – mgilson