2016-02-20 131 views
-2

如何從Python中的文件獲取特定行?我知道如何讀取文件並將其存入列表中,但這對我來說有點困難。讓我解釋什麼,我需要:Python - 從文件中獲取特定行

我有一個看起來像這樣的文件:

LCL | AF033819.3_cds_AAC82593.1_1 [基因= GAG] [蛋白=加格] [protein_id = AAC82593.1] [位置= 336..1838] ATGGGTGCGAGAGCGTCAGTATTAAGCGGGGGAGAATTAGATCGATGGGAAAAAATTCGGTTAAGGCCAG GGGGAAAGAAAAAATATAAATTAAAACATATAGTATGGGCAAGCAGGGAGCTAGAACGATTCGCAGTTAA TCACTCTTTGGCAACGACCCCTCGTCACAATAA LCL | AF033819.3_cds_AAC82598.2_2 [基因= POL] [蛋白質=波爾] [局部= 5' ] [protein_id = AAC82598.2] [位置= < 1631 .4642] TTTTTTAGGGAAGATCTGGCCTTCCTACAAGGGAAGGCCAGGGAATTTTCTTCA GAGCAGACCAGAGCCA ACAGCCCCACCAGAAGAGAGCTTCAGGTCTGGGGTAGAGACAACAACTCCCCCTCAGAAGCAGGAGCCGA
LCL | AF033819.3_cds_AAC82594.1_3 [基因= VIF] [蛋白質= Vif的] [protein_id = AAC82594.1] [位置= 4587..5165] ATGGAAAACAGATGGCAGGTGATGATTGTGTGGCAAGTAGACAGGATGAGGATTAGAACATGGAAAAGTT TAGTAAAACACCATATGTATGTTTCAGGGAAAGCTAGGGGATGGTTTTATAGACATCACTATGAAAGCCC

我需要刪除包含每一行:

LCL | AF033819.3_cds_AAC82594.1_3 [基因= VIF] [蛋白質= Vif的] [protein_id = AAC82594.1] [位置= 4587..5165]

我需要存儲在列表,文件等所有的信件我知道如何工作。任何人都可以用Python中的代碼來幫助我嗎?如何只刪除包含行:

拼箱

+0

你究竟想達到什麼目的? – jsfan

+1

這條線標記它是否被移除是什麼?你也不解釋輸出的格式。你說你知道如何閱讀文件,你應該編輯問題以包含你到目前爲止的代碼。 –

+0

此外,您可以請重新張貼代碼塊中的數據,以便我們可以看到這些線路實際上是什麼樣子? –

回答

0

答案是使用regular expressions。它會是這樣的:

>>> import re 
>>> a = 'beginlcl|AF033819.3_cds_AAC82593.1_1 [gene=gag] [protein=Gag] [protein_id=AAC82593.1] [location=336..1838]end' 
>>> re.sub('lcl.*?location.*?\]', '', a) 
'beginend' 
0

爲什麼不使用startswith()

with open('lcl.txt', 'r') as f: 
    for line in f.readlines(): 
     if line.startswith("lcl|"): 
      print ("lcl line dropping it") 
      continue 
     else: 
      print (line) 

結果:

lcl line dropping it 
ATGGGTGCGAGAGCGTCAGTATTAAGCGGGGGAGAATTAGATCGATGGGAAAAAATTCGGTTAAGGCCAG GGGGAAAGAAAAAATATAAATTAAAACATATAGTATGGGCAAGCAGGGAGCTAGAACGATTCGCAGTTAATCACTCTTTGGCAACGACCCCTCGTCACAATAA 

lcl line dropping it 
TTTTTTAGGGAAGATCTGGCCTTCCTACAAGGGAAGGCCAGGGAATTTTCTTCAGAGCAGACCAGAGCCA ACAGCCCCACCAGAAGAGAGCTTCAGGTCTGGGGTAGAGACAACAACTCCCCCTCAGAAGCAGGAGCCGA 

lcl line dropping it 
ATGGAAAACAGATGGCAGGTGATGATTGTGTGGCAAGTAGACAGGATGAGGATTAGAACATGGAAAAGTT TAGTAAAACACCATATGTATGTTTCAGGGAAAGCTAGGGGATGGTTTTATAGACATCACTATGAAAGCCC 

注:我假設有在這裏正確的地方換行!