import re
s = "2019 was a great year for 10 fortunate people in ages 20 to 60."
# find all groups of digits
re.findall(r'\d+', s)
# ['2019', '10', '20', '60']
def is_number(num):
try:
float(num)
except:
return False
return True
s = '2019 was a great year for 10 fortunate people in ages 20 to 60.'
n = sum(1 for num in s.split() if is_number(num)) # 4
我将使用
s.split(' ')
将字符串拆分为标记,并对每个标记进行迭代,然后使用类似\d+
的正则表达式来测试每个字符是否为数字,并在int中累积良好的测试响应^{} 是处理此问题的一种非常简单的方法:
这假设数字不是小数点或其他非整数的浮点数
对于仅计数整数,可以使用简单的regular expression:
这里
'\d+'
表示“一行中的一个或多个十进制字符”请注意
re.findall
生成list
个结果。如果您只关心元素的数量(n
),那么对于包含很多数字的输入字符串来说,这是浪费。相反,使用迭代器方法,例如合并浮动
假设您也允许
float
这样的1.2
和3e-4
等。相应的正则表达式现在要复杂得多,更简单的解决方案是循环字符串中的所有“单词”,并检查它们是否可以解释为数字:相关问题 更多 >
编程相关推荐