查找唯一的子字符串并保留序列

时间:2018-11-06 00:36:17

标签: python arrays string

我正在尝试编写一个使用字符串的方法,例如DNA字符串,并输出带有子字符串的数字并保留序列。

例如:

>>dna = AABBBGGGKKDDDD
>>substring(dna) #some method
>>2A3B3G2K4D

我猜我可以有一个空数组,然后创建一个循环遍历每个字母的for循环,如果它是相同的字母,则进行计数,然后在最后添加字母。我只是不确定如何从语法上写出来。任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:2)

itertools.groupby()非常适合此任务:

from itertools import groupby

def get_sequence(dna):
    return ''.join(str(len(tuple(g))) + k for k, g in groupby(dna))

print(get_sequence('AABBBGGGKKDDDD'))
# 2A3B3G2K4D

答案 1 :(得分:0)

这是一个简单的例子。

dna = 'AABBBGGGKKDDDD'


def get_sequence(dna):
    sequence = ''
    previous_c = ''
    count = 0
    for c in dna:
        if c == previous_c:
            count += 1
        else:
            if len(previous_c) > 0:
                sequence += '{}{}'.format(count, previous_c)
            count = 1
            previous_c = c
    if count > 0:
        sequence += '{}{}'.format(count, previous_c)
    return sequence


print(get_sequence('A'))
print(get_sequence(''))
print(get_sequence(dna))

输出:

1A

2A3B3G2K4D