gpt4 book ai didi

python - 如何在文本文件中查找字符串并打印前后行

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:01 30 4
gpt4 key购买 nike

我正在尝试将 shell 脚本转换为 python 代码,但在尝试此操作时遇到了困难。

我有一个输出文本文件的进程,该文件具有如下部分:

Running Operation kdasdakdnaskdaksdma

(error if present) error: kdmakmdasmdaksom

该文件可以有多行用于操作和错误(如果存在,否则下一行将只有另一个操作);每个 block 后面总是有一个 crlf。

我正在尝试扫描文件以查找包含“error:”的行,然后读取导致错误的操作以及错误的详细信息,以便我可以从文本文件中推断出它并将其保存在错误日志文件。

到目前为止,我可以使用这个简单的代码找到其中包含“错误:”的行,但我找不到任何关于如何实际打印不一定是这些行的示例包含错误消息,但位于“error:”所在行之前和之后的错误消息。

使用 awk 或 grep 会很简单,但使用 Python 我不太确定如何做到这一点;这就是我到目前为止所拥有的,能够打印有错误的行,但它只打印那个,而我想控制之前和之后打印的行。

import re

fh = open('~/logs_output.txt')

for line in fh:
if "error:" in line:
print line

尝试查看 python 中的 RE 模块以及字符串模块,但到目前为止,我还没有找到任何可以让我执行使用 awk 执行的操作的内容,例如,您可以在其中查找出现的情况特定字符串并打开打印,然后在完成后将其关闭

有人能给我指出解决这个问题的正确方向吗?谢谢!

最佳答案

import re


ss = '''qhvfgbhgozr
yytuuuyuyuuuyuyuuyy
jhfg tryy error jjfkhdjhfjh ttrtr
aaaeeedddeedaeaeeaeeea
jhzdgcoiua zfaozifh cohfgdyg fuo'''

regx = re.compile('^(.*)\r?\n(.*?error.*)\r?\n(.*)', re.MULTILINE)

print regx.search(ss).groups()

结果

('yytuuuyuyuuuyuyuuyy', 'jhfg tryy error  jjfkhdjhfjh ttrtr', 'aaaeeedddeedaeaeeaeeea')

关于python - 如何在文本文件中查找字符串并打印前后行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774626/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com