1

新しいfile.txt. ここでの私の目標は、複数のペアを開始して終了するかどうかを確認し、ペアごとに個別のファイルを作成することです。そうでない場合は、そのままにしておきます。

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)
4

2 に答える 2

4

各ペアのファイルが必要な場合は、次のようにすることができます。

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)

これが役立つことを願っています。

于 2012-07-12T21:22:26.423 に答える
0

私の知る限り、それを行う方法はありません。オブジェクトのリストを返し、その長さを取得できます (または、より簡単に、戻り値をリストにキャストします)。

PFAMresults=list(searchPFAM)
nresults=len(PFAMresults)
for start,end in PFAMresults:
    dosomething()
于 2012-07-12T21:21:10.163 に答える