1

我正在尝试编写代码,以便消除结果文件中的重复项,即带有“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 | 开始= 174,结束= 196 | 描述:A177T

YQCRHCSKSFSQRSDLVKHQRIH

Q14591 | 不适用 | 开始= 174,结束= 196 | 描述:M418T

YQCRHCSKSFSQRSDLVKHQRIH

Q14591 | 在第 21 位 | 开始= 398,结束= 420 | 描述:M418T YACSDCTKSFSRRSDLVKHQRIH

Q14591 | 不适用 | 开始= 398,结束= 420 | 描述:M418T

YACSDCTKSFSRRSDLVKHQRIH

4

2 回答 2

1

为什么不事后过滤掉它们?

于 2012-07-24T01:29:22.640 回答
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')

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

于 2012-07-24T00:45:11.373 回答