Python 如何使用line.strip()打印多行

Python 如何使用line.strip()打印多行,python,python-3.x,pycharm,Python,Python 3.x,Pycharm,我正在做一个数据挖掘程序,它正在寻找关键字Background:yellow。我想找到它,然后打印它出现的那一行和之后的十行。到目前为止,我已经让我的程序打印关键字出现的行号和行号,但我无法让它打印接下来的几行。我的代码如下: 我曾尝试使用打印(“行{}:{}”。格式化{cnt,行[int:int]),但没有成功 导入系统 sys.stdout=open('results','a') 打印(系统标准输出) 文件路径='test' 打开(文件路径)作为fp时: 行=fp.readline(5)

我正在做一个数据挖掘程序,它正在寻找关键字
Background:yellow。我想找到它,然后打印它出现的那一行和之后的十行。到目前为止,我已经让我的程序打印关键字出现的行号和行号,但我无法让它打印接下来的几行。我的代码如下:

我曾尝试使用
打印(“行{}:{}”。格式化{cnt,行[int:int])
,但没有成功


导入系统
sys.stdout=open('results','a')
打印(系统标准输出)
文件路径='test'
打开(文件路径)作为fp时:
行=fp.readline(5)
cnt=1
while line:
line=fp.readline()
cnt+=1
如果str(“背景:黄色;”)不在同一行:
持续
elif str(“背景:黄色;”)行:
打印(“”)
建立
""")
打印(“行{}:{}.”格式(cnt,line.strip())

一个更简单的解决方案是使用grep做完全相同的事情:

grep -i -A 10 "Background:yellow;" <filename>
grep-i-a10英寸背景:黄色
-10将在匹配行之后打印10行。

以下是我的方法:

  • 逐行读取文件
  • 如果我们在该行中找到了我们要查找的内容,请将计数器设置为11(这意味着这一行,再加上10)
  • 然后,如果计数器大于0,则打印该行并减小计数器
  • 代码:


    作为对@benjamin答案的补充,如果您想检索python内部的
    grep
    输出:

    
    导入子流程
    输出=子流程。检查输出(
    “grep-i-A 10”背景:黄色;“,
    stderr=subprocess.STDOUT,
    shell=True)。解码()
    行=输出。拆分('\n')
    打印(行)
    

    第一行:
    lines[0]
    ,是您的匹配行。

    对不起,我以前从未使用过grep。在我的代码中我应该在哪里使用它?感谢您的帮助如果您正在运行linux(或windows中的cygwin),grep是一个终端程序,它将执行类似这样的简单搜索操作。然后,您可以将输出导入python程序。
    counter = 0
    with open('data.txt') as f:
        for line in f:
            if 'Background:yellow;' in line:
                counter = 11
                print()  # Optional: Put out an empty line
            if counter > 0:
                print(line, end='')
                counter -= 1