在Python中计算字符重复次数

时间:2015-01-13 14:29:48

标签: python string

我正在编写一个Python程序,我需要一些方法来计算字符串中出现X或一段X的次数。因此,例如,如果输入为aaaXXXbbbXXXcccXdddXXXXXeXf,则输出应为5,因为字符串中有5个X段。

在Perl中我会这样做。

my $count =()= $str =~ m/X+/g;

我熟悉Python中的re.search命令,但我不知道如何计算结果的数量,我不确定这是否是解决Python问题的最有效方法

我的首要任务是可读性/清晰度;效率是次要的。

2 个答案:

答案 0 :(得分:5)

您可以使用itertools.groupby

>>> s = "aaaXXXbbbXXXcccXdddXXXXXeXf"
>>> import itertools
>>> sum(e == 'X' for e, g in itertools.groupby(s))
5

这对可迭代中的元素进行分组 - 如果没有给出键函数,它只是对相等的元素进行分组。然后,您只需使用sum来计算密钥为'X'的元素。

regular expressions

怎么样?
>>> import re
>>> len(re.findall("X+", s))
5

答案 1 :(得分:1)

这应该有效:

prev = None
count = 0
for letter in string:
    if letter == 'X' and prev != 'X':
        count += 1
    prev = letter