使用正则表达式Python中的match函数后打印行

2024-05-16 23:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我写了这个代码来读取一个文件。我需要从这个文件中提取文本的某一部分。首先,我使用正则表达式来匹配我想要的文本部分的开头:

for line in f:
 matchObj = re.search( r'chores \s+ income \s+ .*', f.read(), re.M|re.I)

在文本中找到这个并在文本中打印出这一行之后,在文本后面还有7行要打印。在

所以我想读取匹配的行之后的每一行,并将它们放入一个数组中,但我已经尝试了很长时间,不知道如何打印匹配的行之后的行。在

我知道如何逐行逐行阅读全文,但我不知道如何在这一行后面打印。在

有人能帮我吗?在

这不是家庭作业,只是我正在做的一个项目

编辑**

因此,输入示例如下:

^{pr2}$

这是一个很随机的例子。如果使用正则表达式,我会找到“Chores income number of Chores cost”这一行

但所需的输出将是:

^{3}$

Tags: 文件代码in文本reforreadsearch
1条回答
网友
1楼 · 发布于 2024-05-16 23:41:39

如果在Chores标题之后有任何非数据行,可以使用这样的技术。在

# Define the patterns
# HEADER_PATTERN = re.compile(...)
# DATA_PATTERN = re.compile(...)

def parse(line):
    """
    Do whatever it is to the data lines you need
    """
    ...


# Scan the file until you find the header pattern
for line in file:
    m = HEADER_PATTERN.match(line)
    if m:
        break

# Collect the data lines
data = []

# We can use the file again because it remembers how many lines we've
# passed already.
for line in file:
    m = DATA_PATTERN.match(line)

    if m:    
        data.append(parse(line))
    else:
        # No more data lines
        break

相关问题 更多 >