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

时间:2019-05-22 23:24:58

标签: python python-3.x pycharm

我正在研究一个正在寻找关键字select col1, col2, row_number() over (partition by col1, col2, (seqnum - seqnum_2) order by <ordering column>) as col3 from (select t.*, row_number() over (partition by col1 order by <ordering column>) as seqnum, row_number() over (partition by col1, col2 order by <ordering column>) as seqnum_2 from t ) t; 的数据挖掘程序。我想找到它并打印它出现的行以及之后的十行。到目前为止,我已经在程序中打印出出现关键字的行和行号,但是我无法打印下几行。我的代码如下:

我尝试使用Background:yellow;,但没有用。

print("line{}: {}".format{cnt, line[int:int])

3 个答案:

答案 0 :(得分:2)

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

grep -i -A 10 "Background:yellow;" <filename>

-A 10将在匹配的行之后打印10行。

答案 1 :(得分:0)

这是我的方法:

  1. 逐行读取文件
  2. 如果我们在该行上找到所需的内容,请将计数器设置为11(这意味着该行,再加上10个)
  3. 然后,如果计数器大于0,则打印该行并减少计数器

代码:

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

答案 2 :(得分:0)

如果要检索python内部的grep输出,请补充@benjamin答案:


import subprocess

output = subprocess.check_output(
    'grep -i -A 10 "Background:yellow;" <filename>',
    stderr=subprocess.STDOUT,
    shell=True).decode()

lines = output.split('\n')
print(lines)

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