字符串中的数字以“非数字”或错误形式出现 - Python [重复]

Posted

技术标签:

【中文标题】字符串中的数字以“非数字”或错误形式出现 - Python [重复]【英文标题】:numbers in string come out as "not numbers" or fals - Python [duplicate] 【发布时间】:2013-06-30 04:07:32 【问题描述】:

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

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

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

非常感谢

【问题讨论】:

查看此链接 - rosettacode.org/wiki/Determine_if_a_string_is_numeric#Python 【参考方案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

【讨论】:

【参考方案2】:

当空格和文本混合时,这可以应付:

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

【讨论】:

【参考方案3】:

您可以替换 '.'用零检查它是否是数字,假设你的列表中只有浮点数和整数......

>>> a
['0', '0.45']
>>> for each in a:
...     repl = each.replace('.','0')
...     if repl.isdigit():
...             print each
...
0
0.45

【讨论】:

以上是关于字符串中的数字以“非数字”或错误形式出现 - Python [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Linux ls的迷之用法

django中的urlpatterns的正则语法

第一阶段第三周作业

正则表达式

linux 下/var,/etc,/tmp目录操作

导入导出, Excel,CSV格式数据复制的各种特殊情况