gpt4 book ai didi

Python如何在匹配后抓取一定数量的行

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

假设我有一个以下格式的输入文本文件:

Section1 Heading    Number of lines: n1
Line 1
Line 2
...
Line n1
Maybe some irrelevant lines

Section2 Heading Number of lines: n2
Line 1
Line 2
...
Line n2

文件的某些部分以标题行开头,该标题行指定该部分中有多少行。每个部分标题都有不同的名称。

我编写了一个正则表达式,它将根据用户搜索每个部分的标题名称来匹配标题行,解析它,然后返回数字 n1/n2/etc 来告诉我该部分中有多少行。我一直在尝试使用 for-in 循环来读取每一行,直到计数器达到 n1,但到目前为止还没有成功。

这是我的问题:当匹配中给出了匹配行之后的特定行数并且每个部分都不同时,如何返回该行数?我是编程新手,非常感谢任何帮助。

编辑:好的,这是我到目前为止的相关代码:

import re
print
fname = raw_input("Enter filename: ")
toolname = raw_input("Enter toolname: ")

def findcounter(fname, toolname):
logfile = open(fname, "r")

pat = 'SUCCESS Number of lines :'
#headers all have that format
for line in logfile:
if toolname in line:
if pat in line:
s=line

pattern = re.compile(r"""(?P<name>.*?) #starting name
\s*SUCCESS #whitespace and success
\s*Number\s*of\s*lines #whitespace and strings
\s*\:\s*(?P<n1>.*)""",re.VERBOSE)
match = pattern.match(s)
name = match.group("name")
n1 = int(match.group("n1"))
#after matching line, I attempt to loop through the next n1 lines
lcount = 0
for line in logfile:
if line == match:
while lcount <= n1:
match.append(line)
lcount += 1
return result

文件本身相当长,并且在我感兴趣的部分之间散布着许多不相关的行。我不太确定的是如何指定在匹配行之后直接打印行。

最佳答案

# f is a file object
# n1 is how many lines to read
lines = [f.readline() for i in range(n1)]

关于Python如何在匹配后抓取一定数量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443392/

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