2016-10-06 139 views
1

我正在導入一個txt文件到Python 3中,我能夠成功地打印我用作標識符的項目/行,但是我在打印以下並保留該值。在文本文件中搜索值然後打印下一行

我使用'Anchor'來查找後續的訂單項。每個'Anchor'之間的行數有所不同,這意味着有時會在'Anchor'之間出現垃圾/噪音,但距岸邊的深度和距離始終與Anchor相同。我試圖加1行,因爲如果功能讓我知道這是一個'Anchor'值,但是我得到如下:

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

該文件類似於:

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 

與嘗試下面的代碼:

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))電話。

相關問題