python – 有一种简单的方法可以获得单词中重复字符的数量吗?

我试图得到一个单词中有多少个字符重复.重复必须是连续的.

例如,输入“loooooveee”的方法应返回6(4次’o’,2次’e’).

我正在尝试实现字符串级别的功能,我可以这样做但是,有一种简单的方法可以做到这一点吗?正则表达式,还是其他一些东西?

到目前为止我试过这个:

def measure_normalized_emphasis(text):
    char = text[-1]
    emphasis_size = 0
    for i in range(1, len(text)):
        if text[-i] == char:
            emphasis_size += 1
        else:
            char = text[i - 1]

    return emphasis_size

它用“loooooveee”返回8.

最佳答案
原始问题:重复的顺序无关紧要

您可以按总字母数减去唯一字母的数量. set应用于一个字符串将返回一个唯一的字母集合.

x = "loooooveee"
res = len(x) - len(set(x))  # 6

或者您可以使用collections.Counter,从每个值中减去1,然后求和:

from collections import Counter

c = Counter("loooooveee")

res = sum(i-1 for i in c.values())  # 6

新问题:重复必须是连续的

您可以使用itertools.groupby对顺序相同的字符进行分组:

from itertools import groupby

g = groupby("aooooaooaoo")
res = sum(sum(1 for _ in j) - 1 for i, j in g)  # 5

要避免嵌套的和调用,可以使用itertools.islice

from itertools import groupby, islice

g = groupby("aooooaooaoo")
res = sum(1 for _, j in g for _ in islice(j, 1, None))  # 5

转载注明原文:python – 有一种简单的方法可以获得单词中重复字符的数量吗? - 代码日志