2010-07-12 156 views
3

我如何检查表(见下面)的第一个元素是一个数字在Python(使用某种正则表达式):如何检查列表中的元素是否是数字?

temp = ['1', 'abc', 'XYZ', 'test', '1'] 

非常感谢。

+5

如果答案符合您的需求,请随时以绿色勾选它。 :-) – eruciform 2010-07-12 17:43:10

+0

@eruciform:说他在答案旁边票数最多的那个人:) – Stephen 2010-07-14 01:01:42

回答

11
try: 
    i = int(temp[0]) 
except ValueError: 
    print "not an integer\n" 

try: 
    i = float(temp[0]) 
except ValueError: 
    print "not a number\n" 

如果必须用正则表达式来完成:

import re 
re.match('^[-+]?(([0-9]+([.][0-9]*)?)|(([0-9]*[.])?[0-9]+))$', temp[0]) 
+1

如果你要检查try块内的任何其他东西,请确保你'除了ValueError' – 2010-07-12 01:13:34

+0

这是如何最有效票?空的除了,严重吗?编辑:哦,他现在修复它..仍然,为什么你不能使用正则表达式,因为他问,或内置函数之一?这是一种代码繁重的方式 – Bartek 2010-07-12 01:14:53

+0

我全都告诉他正确的做法,但你明确地忽略了“使用正则表达式”的问题的部分:) – Stephen 2010-07-12 01:14:54

1

使用正则表达式(因为你问):

>>> import re 
>>> if re.match('\d+', temp[0]): print "it's a number!" 

否则,只是尝试解析为int和catch例外:

>>> int(temp[0]) 

当然,如果你想要漂浮物,底片,科学记数法等等,这一切都会(稍微)更复杂。我将把它作为练习提问:)

+0

非常感谢您的帮助。 – DGT 2010-07-12 01:20:22

4

如果你只是期望一个简单的正数,你可以使用Strings的isDigit方法。

if temp[0].isdigit(): print "It's a number" 
相关问题