Python 3.x 解析文件时需要帮助将列表转换为字符串。python
gene_finder()应该是 包含DNA序列的文件名,从文件中读取该序列,识别ORF 在该序列中,长度超过min_len(一个数字),GC含量超过minGC(一个分数), 并且,对于高于最低要求的每个ORF,返回其长度、其%GC含量的列表, 还有DNA序列本身。如果有多个ORF,则这应该是一个列表列表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
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()
根据需要将其转换为字符串。此列表中有一个循环称为