2016-05-04 11 views
0

私はPythonには少し新しく、誰かが助けることができるかどうか疑問に思っていました。基本的に私はファイルの内容を読んでいて、 "prb"という単語を見つけたらnext()関数を使って次の行をチェックし、 "rt"という単語で始まっていれば両方の行を出力したい。特定の単語で始まる場合にのみ次の行を表示します

with open('/home/user/Desktop/3rdstep.txt', 'r') as f: 
    f.readline() 
    for line in f: 
      if "prb" in line: 
        try: 
          myword = next(f) 
          if "rt" in myword: 
            print(line.strip()) 
            print(myword) 
        except: 
          print("pass") 

これはうまく動作しますが、唯一の問題は、それは私にはわからない理由でランダムに「RT」の単語をスキップしていることである。これまでのところ私は、コードのこの作品を書きました。誰かが喜んで助けることができますか、誰かが似たようなことをやったのですか

おかげ

+0

あなたには、いくつかのサンプルデータを投稿することができますか? –

答えて

0

if myword.startswith("rt"):を使用することができます。唯一の例外は、ファイル内の最初の3行である場合です。これは、for line in f:'prb'で始まる最初の行を読み取り、myword = next(f)が2番目の行を読み取るためです。したがって、次の繰り返しでline'rt'で始まります。

の代わりにあなたが前の行を格納し、2行が一致するかどうかを確認でき、次の行を読んで:

prev = '' 
with open('/home/user/Desktop/3rdstep.txt') as f: 
    for line in f: 
     if prev.startswith('prb') and line.startswith('rt'): 
      print(prev.strip()) 
      print(line) 
     prev = line 
+0

ありがとうございます。完璧に働いた! – starshine

0

あなたの入力は、その後、彼らはスキップされ'rt'で始まる行が続く'prb'で始まる二つの連続ラインを持っている場合は、代わりにif "rt" in myword:

+0

あなたの提案に感謝しますが、これは以前と同じ結果を出力し、私の問題は解決しません。 – starshine

関連する問題