我正在使用代码查找seq_find在seq_long中的位置,并尝试在对齐结束的seq_long中打印出索引。
seq_long="CCGACATCGTCCTCACCGACCATCGTCCTGCATCGTCCT"
seq_find="CATCGTCCT"
matching_seq_index=[]
matching_seq_range=[]
matching_seq_index_end=[]
for x in range(len(seq_long)):
search=seq_long[x:x+9]
matched=[]
if search==seq_find:
matching_seq_index.append(x)
matching_seq_index_range.append(len(search))
matching_seq_index_end.append(x:x+len(search))
else:
pass
print matching_seq_index
答案 0 :(得分:0)
您需要更改:
matching_seq_index_end.append(x:x+len(search))
为:
matching_seq_index_end.append(x+len(search))
无论如何使用re.finditer
更短的版本和列表理解:
>>> import re
>>> [m.end() for m in re.finditer(seq_find, seq_long)]
[13, 29, 39]
答案 1 :(得分:0)
如果您将seq_long
与seq_find
分开,则会发现seq_find
在seq_long
中重复了多少时间,因此使用简单的代码可以在seq_long中打印出索引对齐结束。 :
>>> seq_long.split(seq_find)
['CCGA', 'CACCGAC', 'G', '']
>>> [end_sign[0] if len(end_sign)>0 else '' for end_sign in seq_long.split(seq_find)]
['C', 'C', 'G', '']