You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术实现:找到目标行后如何打印其后一行内容

解决方法:找到含指定字符的行并打印其下一行

嘿,我明白你的需求啦——要找出包含字符'x'的行,同时把它的下一行也打印出来对吧?咱们先看看你之前的问题出在哪,再给你两种实用的解决方案。

为什么你之前的尝试没成功?

你写的lines[lines.index(lines) + 0:100]其实是个误区:这里的lines是当前循环到的单行字符串,lines.index(lines)是在这个字符串里找它自己的位置,结果永远是0,所以切片取的是当前行的前100个字符,根本不是下一行内容,自然达不到效果~

方案1:先把所有行存入列表(适合小文件)

如果你的输入文件不大,可以先把所有行读进列表,这样就能通过索引直接访问下一行:

# 替换成你的输入文件路径
with open('input.txt', 'r') as input_file:
    all_lines = input_file.readlines()

# 遍历每一行的索引
for idx in range(len(all_lines)):
    current_line = all_lines[idx].rstrip('\n')  # 去掉末尾换行符,避免重复空行
    if 'x' in current_line:
        print(current_line)
        # 检查是否不是最后一行,防止索引越界
        if idx + 1 < len(all_lines):
            next_line = all_lines[idx+1].rstrip('\n')
            print(next_line)

这种方法的好处是直观,能随时回溯之前的行,但如果文件特别大,会占用较多内存。

方案2:用迭代器的next()方法(高效适合大文件)

文件对象本身就是迭代器,我们可以利用这一点,找到目标行后直接取下一行,不用把整个文件读进内存:

with open('input.txt', 'r') as input_file:
    # 文件对象本身就是迭代器,直接遍历即可
    for line in input_file:
        current_line = line.rstrip('\n')
        if 'x' in current_line:
            print(current_line)
            try:
                # 调用next()获取下一行
                next_line = next(input_file).rstrip('\n')
                print(next_line)
            except StopIteration:
                # 如果已经是最后一行,就跳过(没有下一行可打印)
                pass

这个方法更高效,因为它逐行读取,不会占用额外内存,适合处理大文件。

测试效果

用你给的输入示例:

line 1 x
line 2 a
line 3 a
line 3 a

两种方案都会输出:

line 1 x
line 2 a

完全符合你的期望~

内容的提问来源于stack exchange,提问作者user8560167

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:29:19