2017-05-25 10 views
0

私は必要のないたくさんの情報を持つtxtファイルを持っています。以下のプログラムは、ほとんどのファイルで動作します。私の問題は、"OB"の行が見つかると、すべての行を印刷したいということです。after "OB" and before "CB"。私はその行に何が含まれているのかわからないので、私はそれらを検索することはできません.の行の間に1行または25行があります。検索を完了した後で追加の行を印刷する

これはあまりにも混乱しますか?

f=open('temp.txt','r') 
f1=open('newtemp.txt', 'a') 

a ='PN' 
b = 'OB' 
c = 'CB' 

for line in f.readlines(): 
    if a in line: 
     print (line) 
    if b in line: 
     print (line) 
    if c in line: 
     print (line)  


f1.close() 
f.close() 
+0

与えられた例では、 'f1'は使用されません –

答えて

0

あなたはこれを試すことができます。

f = open('temp.txt','r') 
f1 = open('newtemp.txt', 'a') 

a ='PN' 
b = 'OB' 
c = 'CB' 

flag = False 

for line in f.readlines(): 

    if b in line:    
     flag = True 
     continue 

    if flag: 
     if c not in line: 
      print (line)  
     else: 
      break 

f1.close() 
f.close() 

これはあなたの問題を解決する方法についてのアイデアを与えることだけです。この例では、af1の変数を使用していないことに注意してください。

0

以下は、b(「OB」)が線であるかどうかをテスト、一度に1行目の行を読み、次に読み取りを停止、それはc(の行に遭遇するまで、次のループで読み取り続けます"CB")が含まれています。フラグは必要ありません。それは単にファイルポインタが行ごとに転送されることに依存します。

fname = 'temp.txt' 
b = 'OB' 
c = 'CB' 

with open(fname) as fp: 
    for line in fp: 
     if b in line: 
      break 
    for line in fp: 
     if c in line: 
      break 
     print(line) 
関連する問題