有没有办法计算出我的收益率有多少?

2024-06-02 10:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道在我创建一个新的file.txt之前有没有办法找出多少对值(start,end)。我的目标是检查我是否开始,结束值超过一对,然后我想为每一对创建单独的文件。如果没有,那就保持原样。你知道吗

def searchPFAM(fname):
    with open(fname,'rb') as f:
        root = etree.parse(f)
        for lcn in root.xpath("/protein/match[@dbname='PFAM']/lcn"):#find dbname =PFAM
            try:
                start = int(lcn.get("start"))#if it is PFAM then look for start value
                end = int(lcn.get("end"))#if it is PFAM then also look for end value
                yield start, end
            except (TypeError , ValueError) as e:
                pass 

with open('newfile.txt','w') as fileinput:
    for start, end in searchPFAM(fname):
        print start, end  
        if start <= end:
            text=''.join(makeList[(start-1):(end-1)])
            fileinput.write(text)

Tags: intxtforifaswithpfamroot
2条回答

据我所知,没有办法。您可以只返回一个对象列表并获取其长度(或者更简单的是,将返回值转换为列表):

PFAMresults=list(searchPFAM)
nresults=len(PFAMresults)
for start,end in PFAMresults:
    dosomething()

如果要为每一对创建一个文件,可以执行以下操作:

for i, (start, end) in enumerate(searchPFAM(fname)):
    print start, end  
    if start <= end:
        with open('newfile-%s.txt' % i,'w') as fileinput:
            text=''.join(makeList[(start-1):(end-1)])
            fileinput.write(text)

希望这会有帮助。你知道吗

相关问题 更多 >