我正在尝试编写代码,以便消除结果文件中的副本,即“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
答案 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')
这是很多争论,你或许可以提出更好的重构。