所以,我在python中有一个字符串列表,我试图找出哪些键是数字。我正在尝试使用list.[key].isdigit()
,但它仅适用'0'
于例如:
list = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000']
只会确定这'0'
是一个数字,但'0.45'
不是'0.55'
。我该如何解决这个问题?
非常感谢
您可以使用异常处理和函数:
>>> def is_num(x):
... try :
... float(x)
... return True
... except ValueError:
... return False
...
>>> lis = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000']
>>> for x in lis:
... print is_num(x)
...
True
True
True
True
True
True
True
True
您可以替换“。” 带零并检查其是否为数字,假设您在列表中仅获得浮点数和整数...
>>> a
['0', '0.45']
>>> for each in a:
... repl = each.replace('.','0')
... if repl.isdigit():
... print each
...
0
0.45
当空格和文本混合时,这可以解决:
import re
def ok(val):
m = re.match('\s*\d+\.?\d*\s*', val)
if m and m.group(0) == val:
return True
return False
list = ['0', '0.450000000000000', '0', '23x', ' 2.7 ', '2. 7', '1.2.3']
for val in list:
print ok(val), val
# True 0
# True 0.450000000000000
# True 0
# False 23x
# True 2.7
# False 2. 7
# False 1.2.3