繁体   English   中英

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

[英]Searching for value in a text file then printing the next line

我正在将一个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()

您可以引入一个表示最后一行状态的变量,如下所示:

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

我强烈建议使用python迭代器

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

lines = iter(f.readlines())

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

如果您需要在'Anchor'之后打印其他行,只需添加更多print(next(lines))调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM