如何检测主要是数字的字符串

How can I detect a string that is mostly number

在一个python程序中我想过滤大部分是数字的字符串,比如table等

中的实验结果

例如,像“year 2004 2005 2006”或“dimension 2.343m 3.85m 343.5m”这样的字符串必须被过滤。

我知道如何通过 any(i.isdigit() for i in str) 检查字符串是否包含数字,但如何计算它们?我可以用一个循环来做到这一点,但我正在寻找一个类似的函数来内联完成它。

如果正确理解您的问题,您正在寻找 sum

>>> sum(1 for i in str if i.isdigit())

您可以 count 字符串中的数字并检查数字的计数,例如大于 len()//2 或不如下所示:

>>> st = "year 2004 2005 2006"
>>> sum(s.isdigit() for s in st) > len(st)//2
True

>>> st2 = "year year year 2006"
>>> sum(s.isdigit() for s in st2) > len(st2)//2
False

# for more explanation
>>> [s.isdigit() for s in st2]
[False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 True,
 True,
 True]

>>> sum(s.isdigit() for s in st2)
4