计算字符串中有多少个数字

时间:2013-10-23 00:59:11

标签: python python-2.7 count string-length

下面应该是一个相当容易的计数/长度需求,但我无法弄清楚如何让它工作......

示例代码

tl1 = "2, 5, 11"
tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
tl3 = "9382938238"
print len(tl1)
print len(tl2)
print len(tl3)

它返回的内容:

8
43
1

应该(对我来说)返回::

3
12
1

知道如何实现我想要的回报吗?

感谢
- Hyflex

5 个答案:

答案 0 :(得分:2)

  
    

你的问题是在string中,空格和字符的长度是多少。

  

所以,这个变量的长度是一个字符串:

string = '123 abc'

是7,因为空间很重要。

现在,要获得您要查找的结果,您需要将字符串更改为列表,该列表是一组逗号分隔值。请注意,我们没有将列表命名为“list”,因为list()是python中的函数:

lst = ['2','5','11']

现在,当我们检查列表的长度时:

>>> print len(lst)
3

我们得到'3'作为结果

让你的字符串看起来像上面的列表:

>>> tl1 = "2, 5, 11"
>>> print tl1.split(',')
['2','5','11']

然后你可以使用len()

检查长度

答案 1 :(得分:2)

字符串的长度是字符串中的字符数。

str.split与逗号(',')一起使用:

>>> tl1 = "2, 5, 11"
>>> tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
>>> tl3 = "9382938238"

>>> tl1.split(',')
['2', ' 5', ' 11']

>>> len(tl1.split(','))
3
>>> len(tl2.split(','))
12
>>> len(tl3.split(','))
1

答案 2 :(得分:2)

您可以使用正则表达式轻松完成此操作:

>> import re
>> result = re.split(r'\D+', '1, 2, 35')
>> result
   ['1', '2', '35']
>> len(result)
   3

如果你需要支持浮点数或其他东西,它有点复杂,但正则表达式仍然是可行的方法。

答案 3 :(得分:2)

如果您的所有字符串都是这样的,那么您只需使用字符串的.split方法:

>>> tl1 = "2, 5, 11"
>>> tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
>>> tl3 = "9382938238"
>>> len(tl1.split())
3
>>> len(tl2.split())
12
>>> len(tl3.split())
1
>>>

.split默认分割为空格字符。如果数字之间的空格可能超过1,您也可以在,上拆分。

答案 4 :(得分:2)

这是一种方式:

tl1 = "2, 5, 11"
tl2 = "2, 5, 11, 29, 48, 1, 492, 2993, 91, 8, 8, 3"
tl3 = "9382938238"

for t in (tl1,tl2,tl3):
    print len([x for x in t.split(',') if x.strip().isdigit()])

打印:

3
12
1

优点是它计算实际整数,而不仅仅是分割项目的数量:

>>> tl4 = '1, 2, a, b, 3, 44'   # 4 numbers, 5 commas, 6 items (numbers and letters)
>>> len(tl4.split(','))
6                               # that numbers and letters...
>>> len([x for x in tl4.split(',') if x.strip().isdigit()])
4                               # integer fields only