2016-10-06 8 views
1

私はPython 3にtxtファイルをインポートしていますが、私は識別子として使用している項目/行を正常に印刷できますが、その値を保持しています。テキストファイル内の値を検索して次の行を印刷

私は'Anchor'を使用して、以下の広告申込情報を検索しています。 'Anchor'の間の行数は変化し、時には'Anchor'の間にジャンク/ノイズがあることを意味しますが、海岸からの深さと距離は常にAnchorからの行数と同じです。

asfasdfasdf 
Anchor 
The depth is 30 Feet 
5 miles from shore 

asdfasdsf 
Anchor 
The depth is 24 feet 
8 miles from shore 
Anchor 
The depth is 21 feet 
4 km from shore 

としよう:

TypeError: Can't convert 'int' object to str implicitly 

ファイルはのようになります。私は、しかし、私は、次の取得、もし関数が、私はそれが'Anchor'値であることを知ることができますよう、ラインに1を追加しようとしました次のコード:

f = open('test.txt', 'r', encoding='utf8') 

for line in f.readlines(): 
    if 'Anchor' in line: 
     print(line+1) 

f.close() 

答えて

0

あなたはこのように、最後の行の状態を表す変数を導入する可能性:

previous_line_was_anchor = False 
for line in f.readlines(): 
    if 'Anchor' in line: 
     previous_line_was_anchor = True 
    else: 
     if previous_line_was_anchor: 
      print line 
     previous_line_was_anchor = False 
+0

このソリューションをご利用いただき、ありがとうございます。「アンカー」の後に追加の広告申込情報を印刷する方法についてご意見をお寄せください。 –

+0

これは元の質問の一部ではありませんでした。あなたは答えをそのまま受け入れるべきです。 –

0

python iteratorsを使用することを強くお勧めします。

あなたの問題ではなくfor .. in ..ループを使用するよりも、カスタムの繰り返しに、より適しているだろうように見えます:

lines = iter(f.readlines()) 

while True: 
    try: 
     if next(lines) == 'Anchor': 
      print(next(lines)) 
    except StopIteration: 
     break 

あなたは「アンカー」はちょうどより多くprint(next(lines))呼び出しを追加した後に追加の行を印刷する必要がある場合。

関連する問題