如何检测主要是数字的字符串
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
在一个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