0

所以,我在python中有一个字符串列表,我试图找出哪些键是数字。我正在尝试使用list.[key].isdigit(),但它仅适用'0' 于例如:

list = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000']

只会确定这'0'是一个数字,但'0.45'不是'0.55'。我该如何解决这个问题?

非常感谢

4

3 回答 3

1

您可以使用异常处理和函数:

>>> 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
于 2013-07-02T17:03:22.683 回答
0

您可以替换“。” 带零并检查其是否为数字,假设您在列表中仅获得浮点数和整数...

>>> a
['0', '0.45']
>>> for each in a:
...     repl = each.replace('.','0')
...     if repl.isdigit():
...             print each
...
0
0.45
于 2013-07-02T17:36:11.067 回答
0

当空格和文本混合时,这可以解决:

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
于 2013-07-02T17:33:38.313 回答