欢迎访问宙启技术站
智能推送

生成带有语法高亮的HTML报告使用pygments.formatters.html

发布时间:2023-12-15 01:45:05

Python中的Pygments库是一个用于语法高亮的工具,它支持多种语言和样式。其中,pygments.formatters.html模块提供了将代码转换为HTML格式的功能。

下面是一个使用pygments.formatters.html生成带有语法高亮的HTML报告的例子:

from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter

# 要高亮的代码
code = """
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5))
"""

# 指定代码的语言(此处为Python),并创建对应的Lexer和Formatter
lexer = PythonLexer()
formatter = HtmlFormatter(style='colorful')

# 将代码进行高亮,并生成HTML代码
highlighted_code = highlight(code, lexer, formatter)

# 生成HTML报告的模板
report_template = """
<html>
<head>
    <style>{}</style>
</head>
<body>
    <h1>代码高亮报告</h1>
    <pre>{}</pre>
</body>
</html>
"""

# 将高亮的代码插入到报告模板中
report_html = report_template.format(formatter.get_style_defs(), highlighted_code)

# 将报告保存到文件中
with open('report.html', 'w') as f:
    f.write(report_html)

在上面的例子中,我们首先定义了一个要高亮展示的Python代码。然后,我们指定了代码的语言(Python)并创建了对应的Lexer和Formatter。接下来,我们使用highlight函数将代码进行高亮处理,并生成HTML代码。最后,我们将高亮的代码插入到一个HTML报告的模板中,并将报告保存到文件中。

在运行上述代码后,会生成一个名为report.html的HTML文件,在浏览器中打开该文件,就可以看到带有语法高亮效果的Python代码报告。

需要注意的是,代码中的formatter.get_style_defs()用于获取样式定义,并插入到HTML代码中,确保高亮的代码能够正确显示样式。