问题
给定两个串 和,是子串的,如果被包含在符号的连续集合(其结果是,必须比不再)。
字符串中符号的位置是在其左侧找到的符号总数,包括符号本身(例如,“ AUGCUUCAGAAAGGUCUUACG”中所有出现的“ U”的位置分别为2、5、6、15、17和18) )。在位置的符号的通过表示。
的子字符串可以表示为,其中 和代表子字符串在其中的开始和结束位置;例如,如果=“ AUGCUUCAGAAAAAAGGUCUUACG”,则=“ UGCU”。
子串的位置是它的起始位置; 请注意,如果它作为的子字符串不止一次出现,它将在多个位置(请参见下面的示例)。
返回:的所有位置,作为的子字符串。
样本数据集
GATATATGCATATACTT
ATAT
样本输出
2 4 10
python解决方案
seq = 'GATATATGCATATACTT'
pattern = 'ATAT'
def find_motif(seq, pattern):
position = []
for i in range(len(seq) - len(pattern)):
if seq[i:i + len(pattern)] == pattern:
position.append(str(i + 1))
print('\t'.join(position))
find_motif(seq, pattern)
import re
matches = re.finditer('(?=ATAT)', 'GATATATGCATATACTT')
for match in matches:
print (match.start()+1,end = '\t')