我想删除不符合多个条件的文本行。这就是例子:
“>”nxp:NX_A0A075B6H9-1 \ DbUniqueId = NX_A0A075B6H9-1 \ PName =免疫球蛋白λ变量4-69异构体Iso 1 \ GName = IGLV4-69 \ NcbiTaxId = 9606 \ TaxName = Homo Sapiens \ Length = 119 \ SV = 1 \ EV = 19 \ PE = 1 \ ModRes =(42 ||二硫化物) MAWTPLLFLTLLLHCTGSLSQLVLTQSPSASASLGASVKLTCTLSSGHSSYAIAWHQQQP EKGPRYLMKLNSDGSHSKGDGIPDRFSGSSSGAERYLTISSLQSEDEADYYCQTWGTGI
“>”nxp:NX_A0A075B6I0-1 \ DbUniqueId = NX_A0A075B6I0-1 \ PName =免疫球蛋白λ变量8-61同种型Iso 1 \ GName = IGLV8-61 \ NcbiTaxId = 9606 \ TaxName = Homo Sapiens \ Length = 122 \ SV = 7 \ EV = 27 \ PE = 2 \ ModRes =(46 ||二硫化物) MSVPTMAWMMLLLGLLAYGSGVDSQTVVTQEPSFSVSPGGTVTLTCGLSSGSVSTSYYPS WYQQTPGQAPRTLIYSTNTRSSGVPDRFSGSILGNKAALTITGAQADDESDYYCVLYMGS GI
“>”nxp:NX_A0A075B6I1-1 \ DbUniqueId = NX_A0A075B6I1-1 \ PName =免疫球蛋白λ变量4-60异构体Iso 1 \ GName = IGLV4-60 \ NcbiTaxId = 9606 \ TaxName = Homo Sapiens \ Length = 120 \ SV = 1 \ EV = 20 \ PE = 1 \ ModRes =(43 ||二硫化物) MAWTPLLLLFPLLLHCTGSLSQPVLTQSSSASASLGSSVKLTCTLSSGHSSYIIAWHQQQ PGKAPRYLMKLEGSGSYNKGSGVPDRFSGSSSGADRYLTISNLQFEDEADYYCETWDSNT
我只想要满足条件PE = 2,PE = 5或PE = 4
的行我尝试使用此代码执行此操作:
list= []
for line in open("nextprot_all.fasta","r"):
if line.startswith(">") and "PE=2" or "PE=4" or "PE=5" in line:
list.append(line)
with open('test_1.txt', 'w') as output:
for i in list:
output.write(i)
问题是,使用这段代码我只是在新文件中输入第一行而不是文本的其余部分。
有没有办法在两个“>”之间捕捉文字当条件为真时?
我想要的结果是:
“>”nxp:NX_A0A075B6I0-1 \ DbUniqueId = NX_A0A075B6I0-1 \ PName =免疫球蛋白λ变量8-61同种型Iso 1 \ GName = IGLV8-61 \ NcbiTaxId = 9606 \ TaxName = Homo Sapiens \ Length = 122 \ SV = 7 \ EV = 27 \ PE = 2 \ ModRes =(46 ||二硫化物) MSVPTMAWMMLLLGLLAYGSGVDSQTVVTQEPSFSVSPGGTVTLTCGLSSGSVSTSYYPS WYQQTPGQAPRTLIYSTNTRSSGVPDRFSGSILGNKAALTITGAQADDESDYYCVLYMGS GI
提前谢谢
#程序已修复。我的问题不是有条件的。我的问题不是关于条件,而是关于我如何迭代以下几行。
list= []
First=False
with open("nextprot_all.peff", 'r') as infile:
for line in infile:
if line.startswith(">"):
if line.find("\PE=2") !=-1 or line.find("\PE=3") !=-1 or line.find("\PE=5") !=-1:
First=True
else:
First=False
if First:
list.append(line)
with open('test_2.txt', 'w') as output:
for i in list:
output.write(i)