python - 字符串切片成列表

标签 python

我正在尝试在 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/

相关文章:

python - Django Userena 更改 url 监护人错误

python - Tensorflow 在进入第一个纪元后抛出 ValueError()

python - 创建菜单时如何删除 tkinter - - - - 行

python - Python 中按下按钮时的 Action

python - 在 python3 中使用 mediainfo 运行 check_output 会产生错误,即使在终端中的相同调用工作正常

python - 将列中的所有唯一单词放入新数据集中

python - Pytables EArray 与 Table 的速度/效率比较

python - 打印无效语法? [Python 3]

python - 使用 csv.reader(open(..)..) 时如何修复 “AttributeError: __enter__”?

python - 没有名为 traitlets.config.application 的模块