如何仅在python中的特定块内读取HTML文件?

问题描述 投票:0回答:1

我试图仅在python中的特定块(jinja模板)内读取HTML文件。我想在{%block content%}和对应的{%endblock%}之间阅读。

我正在搜索块之间的{{和{%,我想打印行号和找到搜索模式的行的内容。

我将文件路径保存在变量中,并在需要时使用它打开文件。我使用枚举功能来跟踪行号。

fp = r"<path_to_HTML_file>"

def scan(line_number, line, flag):
    with open(fp, 'r', encoding='utf-8') as f:
        for check_line_number, check_line in enumerate(f, 1):
            if check_line_number >= line_number:
                if '{%' in check_line:
                    print("Line Number: {}\nContent: {}".format(check_line_number, check_line))


with open(fp, 'r', encoding='utf-8') as f:
    for line_number, line in enumerate(f, 1):
        if '{% block content %}' in line:
            flag = 1
            scan(line_number, line, flag)

我面临的问题是我的代码打印出{%块内容%}之后出现的所有{%的出现,但是我想读到相应的{%endblock%}。

此外,我不确定在哪里关闭文件。

python
1个回答
0
投票

使用常规表达式可以轻松解决此问题。

import re

# blocks will be a list of the contents of the blocks in the string FILE_CONTENTS
blocks = re.findall(r'{% block \w+? %}(.*?){% endblock %}', FILE_CONTENTS, re.S)

我强烈建议您阅读正则表达式模式。它们非常方便。

© www.soinside.com 2019 - 2024. All rights reserved.