Наборы кодонов
Учитывая входную последовательность букв, вы хотите интерпретировать ее как последовательность кодонов, и они ищут небольшой набор определенных c кодонов. Наборы Python отлично подходят для ответа на этот тип вопросов. Например, для проверки WR C одно решение:
wrcset = set(['AAC', 'TAC', 'AGC', 'TGC'])
for codon in (DNA[i:i+3] for i in range(0,len(DNA),3)):
if codon in wrcset:
print(codon)
RE
Если вы хотите использовать регулярное выражение, вы можете использовать нежадное повторение 3- длинные заголовки символов, чтобы пропустить несовпадающие кодоны и затем сопоставить желаемое выражение. Соответствия, возвращаемые итератором, будут иметь как пропущенные, так и целевые кодоны в разных группах захвата (или вы можете сделать первую группу захвата не захватывающей). Например, совпадение SY C может быть записано как
for i in re.compile('(.{3})*?((C|G)(C|T)C)').finditer(DNA):
print(i.group(2))