numbers in string come out as “not numbers” or fals - Python
本问题已经有最佳答案,请猛点这里访问。
所以,我在python中有一个字符串列表,我试图找出哪些键是数字。我试图使用
1 | list = ['0', '0', '0', '0.450000000000000', '0', '0', '0', '0.550000000000000'] |
只确定
非常感谢你
您可以使用异常处理和函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | >>> 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 |
您可以将"."替换为零,并检查它是否为数字,假设您在列表中只得到浮点数和整数…
1 2 3 4 5 6 7 8 9 | >>> a ['0', '0.45'] >>> for each in a: ... repl = each.replace('.','0') ... if repl.isdigit(): ... print each ... 0 0.45 |
当空格和文本混合时,此选项将处理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 |