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