计算字符串

时间:2016-05-29 19:44:15

标签: python string substring

我无法获得字符串中具有n长度的子字符串的出现次数。例如,如果字符串是

CCCATGGTtaGGTaTGCCCGAGGT

和n是

3

输出必须是:

'CCC' : 2, 'GGT' :3

输入是一个列表列表,所以我得到了evry的列表,但我无法继续,输出是所有字符串的序列

代码:

def get_all_n_repeats(n,sq_list):
    reps={}
    for i in sq_list:
        if not i:
            continue
        else:   
            for j in i:
                ........#Here the code I want to do#......                  
return reps

3 个答案:

答案 0 :(得分:2)

一个非常简单的解决方案:

from collections import Counter

st = "CCCATGGTtaGGTaTGCCCGAGGT"
n = 3

tokens = Counter(st[i:i+n] for i in range(len(st) - n + 1))
print tokens.most_common(2)

由你来决定它是一个辅助功能。

答案 1 :(得分:1)

使用Counter

from collections import Counter

def count_occurrences(input, n):
    candidates = []
    for i, c in enumerate(st):
        try:
            candidates.append('{}{}{}'.format(st[i], st[i+1], st[i+2]))
        except IndexError:
            continue

    output = {}
    for k,v in Counter(candidates).items():
        if v > 1:
            output[k] = v

st = "CCCATGGTtaGGTaTGCCCGAGGT"
n = 3

count_occurrences(st, n)
# {'GGT': 3, 'CCC': 2}

答案 2 :(得分:1)

一个非常明确的解决方案:

s = 'CCCATGGTtaGGTaTGCCCGAGGT'
n = 3
# All possible n-length strings
l = [s[i:i + n] for i in range(len(s) - (n - 1))]
# Count their distribution
d = {}
for e in l:
    d[e] = d.get(e, 0) + 1
print(d)