我正在尝试在 one_frame 函数 () 中输入一个字符串:
one_frame("catatgdaftgaatg")
我想做的是返回一个列表 ["atgdaf","atg"]
。每当我发现"atg"
在字符串中,我想捕获 "atg"
以及之后的内容,直到我到达 "taa" "tga" "tag"
。这是我到目前为止所拥有的,但它只返回 ["atg"]
.
def get_orf(dna_seq):
for x in dna_seq:
if("taa" in dna_seq or "tag" in dna_seq or "tga" in dna_seq):
dna_seq=dna_seq.replace("taa","")
dna_seq=dna_seq.replace("tga","")
dna_seq=dna_seq.replace("tag","")
return dna_seq
else:
return dna_seq
def one_frame(dna):
c=0
q=3
dna_list=[]
dna_string=""
while(q<=len(dna)):
dna_string=dna[c:q]
c=c+3
q=q+3
if(dna_string=="atg"):
dna_list.append(get_orf(dna_string))
最佳答案
dna_list.append(get_orf(dna_string+dna[c:q+3]))
只需更新附加功能...
由于 dna_string 的长度始终为 3..您永远不会得到 6 个字符的所需结果
更新:- 我忘记了你提到的其他条件。
def get_orf(dna_seq):
for x in dna_seq:
# print dna_seq
if("taa" in dna_seq or "tag" in dna_seq or "tga" in dna_seq):
dna_seq=dna_seq.replace("taa","")
dna_seq=dna_seq.replace("tga","")
dna_seq=dna_seq.replace("tag","")
if('atg' in dna_seq[3:]):
dna_seq="atg"+dna_seq[3:].replace("atg","")
return dna_seq
else:
return dna_seq
def one_frame(dna):
c=0
q=3
dna_list=[]
dna_string=""
while(q<=len(dna)):
dna_string=dna[c:q]
c=c+3
q=q+3
print dna_string
if(dna_string=="atg"):
dna_list.append(get_orf(dna[c-3:]))
print dna_list
关于python - 字符串切片成列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803132/