Python 3.x 解析文件时需要帮助将列表转换为字符串。python

Python 3.x 解析文件时需要帮助将列表转换为字符串。python,python-3.x,Python 3.x,gene_finder()应该是 包含DNA序列的文件名,从文件中读取该序列,识别ORF 在该序列中,长度超过min_len(一个数字),GC含量超过minGC(一个分数), 并且,对于高于最低要求的每个ORF,返回其长度、其%GC含量的列表, 还有DNA序列本身。如果有多个ORF,则这应该是一个列表列表 def get_orf(DNA): codon = '' if(DNA[0:3] == 'ATG'): codon = DNA[0:3] for

gene_finder()应该是 包含DNA序列的文件名,从文件中读取该序列,识别ORF 在该序列中,长度超过min_len(一个数字),GC含量超过minGC(一个分数), 并且,对于高于最低要求的每个ORF,返回其长度、其%GC含量的列表, 还有DNA序列本身。如果有多个ORF,则这应该是一个列表列表

def get_orf(DNA):
    codon = ''
    if(DNA[0:3] == 'ATG'):
        codon = DNA[0:3]
        for x in range(3,len(DNA)+1,3):
            if DNA[x:x+3] == "TAG"  or DNA[x:x+3] == "TAA" or DNA[x:x+3] == "TGA":
                return codon
            else: codon = codon + DNA[x:x+3] 

    if codon[-3:] in ["TAG", "TAA", "TGA"]:
        return codon
    else: 
        return 'No ORF'  

def one_frame(DNA):
    x = 0
    ORFlist = []

    while x < len(DNA):
        codon = DNA[x:]
        if codon.startswith('ATG'):
            ORF = get_orf(DNA[x:])
            if ORF:
                ORFlist.append(ORF)
            x += len(ORF)
        else: 
            x += 3

    return(ORFlist)

def find_all_orfs(DNA):
    ORFlist = []
    x = one_frame(DNA)
    b = one_frame(DNA[1:])
    c = one_frame(DNA[2:])

    ORFlist = x+b+c

    return ORFlist

def gene_finder(file_name, min_len, minGC):
    x = open(file_name)
    contents = x.readlines()
    GCCount = 0
    ORFlen = []
    GCContent = []
    while contents.len > min_len:
        ORF = one_frame(contents)
        ORFlen.append(len(ORF))   
        for x in contents:
            if x == 'G' or x == 'C':
                GCCount += ((x/len(contents))*100)
                GCContent.append(GCCount)
    x.close

    return ORFlen, GCContent, contents
def get_orf(DNA):
密码子=''
如果(DNA[0:3]=“ATG”):
密码子=DNA[0:3]
对于范围(3,len(DNA)+1,3)内的x:
如果DNA[x:x+3]=“标记”或DNA[x:x+3]=“TAA”或DNA[x:x+3]=“TGA”:
返回密码子
else:密码子=密码子+DNA[x:x+3]
如果密码子[-3:]位于[“TAG”,“TAA”,“TGA”]:
返回密码子
其他:
返回“无ORF”
def一个_框架(DNA):
x=0
ORFlist=[]
而xmin_len时:
ORF=一帧(内容)
附加(len(ORF))
对于目录中的x:
如果x='G'或x='C':
GCCount+=((x/len(内容))*100)
GCContent.append(GCCount)
x、 接近
返回ORFlen、GCContent、contents

其他一切似乎都很好。gene_finder()函数是我遇到的问题。我对用python和一般语言编写代码相当陌生。我不一定是阅读和解析fasta文件的专家。每当我在控制台中调用函数时,都会出现以下错误:“AttributeError:“list”对象没有属性“replace”。我知道这是因为当我打开fasta文件时,它会给我一个列表。如何将该列表转换为字符串。

您应该使用字符串方法
.join(iterable)

必须在作为分隔符的字符串上调用它,因为列表是可编辑的,所以您可以轻松地将列表转换为字符串:

>>> data = ["A", "B", "C"]
>>> ",".join(data)
'A,B,C'
对于您的特殊情况,分隔符应该是
(空字符串),它将
[“A”、“B”、“C”]
转换为
“ABC”

您没有真正显示或解释从何处获得此错误,因此我无法告诉您更多信息,您不能在提供的代码中的任何地方调用
.replace()

编辑:如果您需要将非字符串的列表转换为字符串,例如,
[1,2,3]
要获得
“123”
,您必须首先将每个元素转换为字符串,最好的方法可能是
数据=[str(项)表示数据中的项]
,现在数据包含字符串,您可以
.join()
根据需要将其转换为字符串。此列表中有一个循环称为