How can I check if a string has a numeric value in it in Python?
Possible Duplicate:
How do I check if a string is a number in Python?
Python - Parse String to Float or Int
例如,我想检查一个字符串,如果它不能转换为整数(使用int()),我该如何检测它?
- 这里已经有一个解决方案stackoverflow.com/questions/354038/…
- 为了清楚起见,应该允许-99?"+123"怎么样?或"1729"(带前导空格和尾随空格的整数)。0x123’?
- @马克迪金森——为什么不允许使用'-99'?
- @米吉尔森:不知道——我猜不出OP的用例是什么。但这是一个明显的例子,"isdigit"的答案并不能很好地解决这个问题。
使用.isdigit()方法:
1 2 3 4
| >>> '123'.isdigit()
True
>>> '1a23'.isdigit()
False |
引用文件:
Return true if all characters in the string are digits and there is at least one character, false otherwise.
对于unicode字符串或python 3字符串,您需要使用更精确的定义,而使用unicode.isdecimal()/str.isdecimal();并非所有的Unicode数字都可以解释为十进制数字。例如,U+00B2上标2是数字,但不是十进制。
- -1用于a="0x12" a.isdigit()`>>false
- 我没有投反对票,但是" 1234".isdigit()将返回False,即使int会很高兴地忽略前面的空间。
- @用户1655481:这也不是数字,它是一个python十六进制文本。除非指定了基,否则int('0x12')将抛出valueerror。
- @米吉尔森:这就是函数的意义所在。它取决于您的用例,您需要什么,如果需要.strip()等。
您可以随时使用cx1〔0〕它:
1 2 3 4
| try:
a = int(yourstring)
except ValueError:
print"can't convert" |
请注意,如果您想知道是否可以使用float将字符串转换为浮点数,则此方法会比isdigit更有效。
- 投票赞成。只是尝试一下就更像Python了……除了:)