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

使用pygments.formatters.html模块的HtmlFormatter()将Python代码转换为HTML格式

发布时间:2023-12-14 06:52:10

Pygments是一个语法高亮库,可以将不同语言的代码转换成带有语法高亮的HTML格式。其中,pygments.formatters.html模块提供了一个HtmlFormatter()类,用于生成HTML格式的代码。

使用HtmlFormatter()类,可以选择不同的样式、行号显示、行号起始值、代码段的CSS类等。

下面是一个简单的使用HtmlFormatter()类将Python代码转换为HTML格式的例子:

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

def convert_code_to_html(code):
    # 设置Python代码的Lexer
    lexer = PythonLexer()

    # 初始化HtmlFormatter,设置样式为'monokai'
    formatter = HtmlFormatter(style='monokai')

    # 使用highlight函数将代码转换为HTML格式
    html_code = highlight(code, lexer, formatter)

    return html_code

# 示例代码
code = '''
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

n = 5
result = factorial(n)
print(f"The factorial of {n} is {result}")
'''

# 调用函数将Python代码转换为HTML格式
html_code = convert_code_to_html(code)

# 将生成的HTML代码保存到文件
with open('code.html', 'w') as file:
    file.write(html_code)

在上述例子中,首先导入highlight函数、PythonLexer类和HtmlFormatter类。然后定义了一个convert_code_to_html()函数,该函数接收一段Python代码作为输入,将其转换为HTML格式并返回。在函数内部,将PythonLexer实例化为lexer对象,并将style参数设置为'monokai',即使用'monokai'样式进行高亮。

接下来,调用highlight函数,使用lexerformatter对象对Python代码进行转换,将其转换为HTML格式。最后,将生成的HTML代码保存到名为'code.html'的文件中。

通过运行上述代码,将会在当前目录下生成一个名为'code.html'的文件,其中包含了格式良好且带有语法高亮的Python代码,以及使用'monokai'样式进行着色。

另外值得注意的是,HtmlFormatter类还有其他一些可配置的属性,比如可以通过设置linenos属性为True来显示行号,通过设置linenostart属性来设置行号起始值,通过设置cssclass属性来设置代码段的CSS类。根据自己的需求,可以通过修改这些属性来自定义生成的HTML代码的格式。

总结起来,HtmlFormatter()类可以很方便地将Python代码转换为带有语法高亮的HTML格式,通过修改相关属性可以进一步自定义生成的HTML代码的样式。这在编写代码示例、展示代码片段或者在线教学等场景中非常有用。