计数字符在 Python 中重复

Count character repeats in Python

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

在 Perl 中,我会按如下方式完成此操作。

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

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

中解决我的问题

我的最高优先级是readability/clarity;效率是次要的。

这应该有效:

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

您可以为此使用 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