在字符串中查找sub_string的计数

时间:2018-07-30 16:21:38

标签: python string python-3.x

这为什么将输出设为1而不是2:

string = "ABCDCDC"
print(string.count("CDC"))

而且,由于这不起作用,在这种情况下如何获得2?

4 个答案:

答案 0 :(得分:1)

您可以使用正则表达式计算重叠的子字符串:

import re
string = "ABCDCDC"
print(len(re.findall('(?=CDC)', string))) # 2

答案 1 :(得分:0)

这是一种算法解决方案

string = "ABCDCDC"
sub_string = "CDC"

count = 0
for i in range(len(string)):
    if string[i:len(sub_string)+i] == sub_string:
        count += 1 
print count

答案 2 :(得分:0)

import re
print([m.start() for m in re.finditer('(?=CDC)', 'ABCDCDC')])

这应该找到所有可能重叠的事件

答案 3 :(得分:0)

您可以尝试以下简单方法:

def overlapping_count(string, seek):
    seek_len = len(seek)
    return sum(c == seek[0] and string[i:i + seek_len] == seek
                  for i, c in enumerate(string))
string = "ABCDCDC"
print(overlapping_count(string, "CDC"))