从字符串中查找第二个最大连续字母数

时间:2016-12-01 12:48:58

标签: python regex count word-frequency

我想找到给定字符串

中连续第二次出现字母“C”的值

st = 'SSSSEEEECCCCEE的 CCCCCCCCC SSSSEEECCCCSSSSSSSEEESS的 CCCCCCC SEESSSSCCCCCCSSEEEE'

在上面的字符串中,第一个粗体“C”是条纹中最连续的“C”。我想找到第二个连胜。它的长度可能与第一个的长度相同。

我有以下代码:

st = 'SSSSEEEECCCCEECCCCCCCCCSSSSEEECCCCSSSSSSSEEESSCCCCCCCSEESSSSCCCCCCSSEEEE'
import re
print "counts_of_C :",list(len(s) for s in re.findall(r'C+', st))
print "first _max : ",max(len(s) for s in re.findall(r'C+', st))

输出:

counts_of_C : [4, 9, 4, 7, 6]
first_max_value_of_C :  9

我想要的是找到“C”的第二个最大计数(这里连续第二次出现C 7 )。

我可以静态从计数列表中获取此值,但我正在寻找其他任何方法来执行此操作。

2 个答案:

答案 0 :(得分:1)

这将通过对一组进行排序来获得第二个最大计数:

print "counts_of_C :",sorted(set(len(s) for s in re.findall(r'C+', st)))[-2]

答案 1 :(得分:1)

您执行两次regexp操作,而您只能执行一次。 您可以重复使用事件列表,对其进行排序并打印此排序事件列表的第一个,第二个等元素。

st = 'SSSSEEEECCCCEECCCCCCCCCSSSSEEECCCCSSSSSSSEEESSCCCCCCCSEESSSSCCCCCCSSEEEE'
import re
occurrences = [len(s) for s in re.findall(r'C+', st)]
sorted_ = sorted(occurrences, reverse=True)
print "counts_of_C : %s"% occurrences
print "first _max %d, second highest: %d" % (sorted_[0], sorted_[1])
相关问题