尝试和错误除了赶上休息?

时间:2012-07-24 00:38:38

标签: python file break

我正在尝试编写代码,以便消除结果文件中的副本,即“N / A”行和它下面的行。这就是我所拥有的:

    with open('false_'+uniprotID+'.txt','w') as fileinput:        
        for index, (start, end) in enumerate(searchPFAM(fname)):       
            for item in lookup[uniprotID]:
                for names in wholelookup[uniprotID]:
                    if re.search(r'\d+',names).group(0)==item and start <= int(item) <= end:
                        result = str(int(item) - start + 1)
                        try:
                            fileinput.write(">{0} | at position {1} | start= {2}, end= {3} | description: {4}\n".format(uniprotID, result, start, end, names))
                            fileinput.write(''.join(makeList[start-1:end]))
                            textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
                            fileinput.write('\n')
                        except ErrorIO as e:
                           break 
                    else:
                        fileinput.write(">{0} | N/A | start= {1}, end= {2} | description: {3} \n".format(uniprotID, start, end, names))
                        fileinput.write(''.join(makeList[start-1:end]))
                        textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
                        fileinput.write('\n')

我的结果文件如下所示:

  

Q14591 |在位置4 | start = 174,end = 196 |描述:A177T

     

YQCRHCSKSFSQRSDLVKHQRIH

     

Q14591 | N / A | start = 174,end = 196 |描述:M418T

     

YQCRHCSKSFSQRSDLVKHQRIH

     

Q14591 |在位置21 | start = 398,end = 420 |描述:M418T   YACSDCTKSFSRRSDLVKHQRIH

     

Q14591 | N / A | start = 398,end = 420 |描述:M418T

     

YACSDCTKSFSRRSDLVKHQRIH

2 个答案:

答案 0 :(得分:1)

为什么不在之后过滤掉它们?

答案 1 :(得分:0)

获取您重复的四行代码,并从中创建一个函数。然后从两个地方调用该函数。你必须参数化差异,即创建一个参数,而不是给出两个调用之间差异的不同值。

例如:

def do_the_common_thing(fileinput, uniprotID, result, start, end, names):
    fileinput.write(">{0} | {1} | start= {2}, end= {3} | description: {4}\n".format(uniprotID, result, start, end, names))
    fileinput.write(''.join(makeList[start-1:end]))
    textwrap.wrap(''.join(makeList[start-1:end]),width = 60)
    fileinput.write('\n')

这是很多争论,你或许可以提出更好的重构。