如何获取给定字符串中数字字符的总数?

3

我应该如何计算字符串中数字的个数?

例如:

>>> count_digits("ABC123")

应该返回3。

user1718467,根据您对@A. R. S.的评论,我修改了您的问题。如果您不同意,请在评论中告诉我。 - Rob Cowie
1
认真点,你不能把相同的东西输入谷歌吗? - Anuj Gupta
给那位发布了使用.translate()解决方案的人...我一开始认为那很疯狂,但事实证明它比其他任何已发布的解决方案都快上一个数量级。真是个惊喜。 - Rob Cowie
@RobCowie 问题在于它的工作方式是错误的,它剥离了数字,这就是为什么我又将其删除的原因。 - phant0m
这个问题并不是太局限。 - Lance Roberts
3个回答

18

试试这个:

len("ABC123")

非常简单。你可能需要阅读有关len文档


编辑 你最初的帖子不明确,无法确定你是想要总长度还是数字个数。既然你想要后者,我应该告诉你有很多种方法可以做到这一点,以下是其中三种:

s = "abc123"

print len([c for c in s if c.isdigit()])
print [c.isdigit() for c in s].count(True)
print sum(c.isdigit() for c in s)  # I'd say this would be the best approach

我只需要字符串中数字的数量。 - user1718467
不要用 count(True),而是对列表求和:sum(c.isdigit() for c in s) - Ashwini Chaudhary
1
@AshwiniChaudhary 是的,我只是想展示有多种方法可以解决这个问题 - 但你是正确的。 - arshajii

6
我猜您想要统计字符串中数字的个数。
s = 'ABC123'
len([c for c in s if c.isdigit()]) ## 3

或者你想计算相邻数字的数量。

s = 'ABC123DEF456'
import re
len(re.findall('[\d]+', s)) ## 2

感谢正则表达式的解决方案!它更强大,可以扩展到识别货币等方面。 - Tulio Casagrande

4
sum(1 for c in "ABC123" if c.isdigit())

3
或者简单地说,sum(c.isdigit() for c in "ABC123") 的意思是统计字符串 "ABC123" 中数字字符的数量。 - Ashwini Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接