<p>以下是我对你问题的解答:</p>
<p>注意:这个代码也可以找到重叠的序列。根据是否允许重叠,您必须删除'?='</p>
<pre><code>import re
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
my_file_m= '''TTCCATTCTCTACCCAGCCCCCACTCTGACCCCTTTACTCTGACCCCTTTATTGTCTACTCCTCAGAGCCCCCAGTCTGTATCCTTCTAACTTAGAAAGGGGATTATGGCTCAGGGTCCAACTCTGTGCTCAGAGCTTTCAACAACTACTCAGAAACACAAGATGCTGGGACAGTGACCTGGACTGTGGGCCTCTCATGCACCACCATCAAGGACTCAAATGGGCTTTCCGAATTCACTGGAGCCTCGAATGTCCATTCCTGAGTTCTGCAAAGGGAGAGTGGTCAGGTTGCCTCTGTCTCAGAATGAGGCTGGATAAGAT'''
pat = re.compile(r'(?=(TAA|AAT|TGA|TAG))') # Very important, if you do not need overlaps then remove '?='
matches = re.finditer(pat,my_file_m)
result1 = [int(match.start(1)) for match in matches] # find all the starting positions of the string
result2 = [range(x,x+3) for x in result1 ] # find all the positions of the characters (given that we search for patterns of length 3, can be modified for other lengths too )
result3 = set().union(*result2) # generate a union
for chari in range(len(my_file_m)): # colorize based on if it is in a sequence or not
if(chari in result3):
print bcolors.OKGREEN + my_file_m[chari] + bcolors.ENDC,
else:
print my_file_m[chari],
</code></pre>
<hr/>
<p>清洁剂:</p>
^{pr2}$
<p>贷方:<a href="https://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python?answertab=votes#tab-top">here</a>和<a href="https://stackoverflow.com/questions/10572199/find-position-of-a-substring-in-a-string">here</a></p>
<p>输出:
<img src="https://i.stack.imgur.com/nCTMG.png" alt="enter image description here"/></p>