在文本文件中搜索值,然后打印下一行

时间:2016-10-06 00:03:02

标签: python file python-3.x

我正在将一个txt文件导入到Python 3中,我能够成功打印我用作标识符的项目/行,但是我无法打印以下行并保留该值。

我正在使用'Anchor'查找后面的订单项。每个'Anchor'之间的行数会有所不同,这意味着有时在'Anchor'之间会有垃圾/噪音,但是离岸的深度和距离始终与Anchor的行数相同。我尝试将1添加到行,因为if函数让我知道它是'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()

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我强烈建议您使用python iterators

看起来您的问题更适合自定义迭代,而不是使用for .. in ..循环:

lines = iter(f.readlines())

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

如果您需要在“Anchor”之后打印其他行,只需添加更多print(next(lines))来电。