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

使用Pygments创建漂亮的代码片段。

发布时间:2023-12-28 08:49:57

Pygments是一个功能强大且易于使用的Python库,用于在HTML、LaTeX、SVG和终端中创建漂亮的代码片段。它支持超过500种编程语言和通用格式的语法高亮显示,并且可以进行自定义和扩展。

要使用Pygments创建漂亮的代码片段,首先需要安装Pygments库。可以使用以下命令在Python环境中安装Pygments:

pip install pygments

安装完成后,就可以开始使用Pygments创建漂亮的代码片段了。下面是一个简单的例子,演示了如何使用Pygments将Python代码高亮显示为HTML:

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

code = """
def hello_world():
    print('Hello, World!')

hello_world()
"""

highlighted_code = highlight(code, PythonLexer(), HtmlFormatter())

html_code = """
<!DOCTYPE html>
<html>
<head>
    <style>
        {style}
    </style>
</head>
<body>
    {code}
</body>
</html>
""".format(style=HtmlFormatter().get_style_defs('.highlight'), code=highlighted_code)

print(html_code)

上述代码定义了一个名为code的Python代码字符串。然后使用highlight函数将其高亮显示为HTML代码,使用了PythonLexer作为代码的语法分析器,并使用了HtmlFormatter作为HTML格式化器。

最后,我们将高亮显示的代码插入到HTML模板中,这个模板使用了适用于高亮显示CSS样式的.highlight类。打印出的html_code就是带有高亮显示的Python代码的HTML代码。

执行上述代码,会得到以下结果:

<!DOCTYPE html>
<html>
<head>
    <style>
        .highlight .nb { color: #008000; }
        .highlight .s1 { color: #008000; }
        .highlight .k { color: #0000FF; font-weight: bold; }
        .highlight .c { color: #808080; font-style: italic; }
        .highlight .cp { color: #800080; font-weight: bold; }
        .highlight .cm { color: #808080; font-style: italic; }
        .highlight .c1 { color: #808080; font-style: italic; }
        .highlight .cr { color: #808080; font-weight: bold; font-style: italic; }
        .highlight .r { color: #800000; font-weight: bold; }
        .highlight .cs { color: #008000; font-weight: bold; font-style: italic; }
        .highlight .gd { color: #A00000; }
        .highlight .ge { font-style: italic; }
        .highlight .gr { color: #FF0000; }
        .highlight .gh { color: #0000FF; font-weight: bold; }
        .highlight .gi { color: #00A000; }
        .highlight .go { color: #888888; }
        .highlight .gp { color: #000080; }
        .highlight .gs { font-weight: bold; }
        .highlight .gu { color: #800080; font-weight: bold; }
        .highlight .gt { color: #0044DD; }
        .highlight .kc { color: #0000FF; font-weight: bold; }
        .highlight .kd { color: #0000FF; font-weight: bold; }
        .highlight .kp { color: #0000FF; font-weight: bold; }
        .highlight .kr { color: #0000FF; font-weight: bold; }
        .highlight .kt { color: #900090; }
        .highlight .m { color: #0000FF; }
        .highlight .s { color: #008000; }
        .highlight .na { color: #008000; }
        .highlight .nc { color: #0000FF; font-weight: bold; }
        .highlight .no { color: #008080; }
        .highlight .ni { color: #800080; font-weight: bold; }
        .highlight .ne { color: #FF0000; font-weight: bold; }
        .highlight .nf { color: #A0A000; }
        .highlight .nn { color: #0000FF; font-weight: bold; }
        .highlight .nt { color: #008000; }
        .highlight .nv { color: #954121; }
        .highlight .ow { color: #0000FF; font-weight: bold; }
        .highlight .w { color: #FFFFFF; }
        .highlight .mb { color: #0000FF; }
        .highlight .mf { color: #0000FF; }
        .highlight .mh { color: #0000FF; }
        .highlight .mi { color: #0000FF; }
        .highlight .mo { color: #0000FF; }
        .highlight .sa { color: #008000; }
        .highlight .sb { color: #008000; }
        .highlight .sc { color: #808080; font-style: italic; }
        .highlight .dl { color: #0000FF; }
        .highlight .sd { color: #008000; }
        .highlight .s2 { color: #008000; }
        .highlight .se { font-weight: bold; }
        .highlight .sh { color: #0000FF; }
        .highlight .si { color: #0000FF; }
        .highlight .sx { color: #0000FF; }
        .highlight .sr { color: #0000FF; font-weight: bold; }
        .highlight .s1 { color: #008000; }
        .highlight .ss { color: #0000FF; font-weight: bold; }
        .highlight .bp { color: #000080; }
        .highlight .fm { color: #0000FF; }
        .highlight .vc { color: #954121; }
        .highlight .vg { color: #0000FF; }
        .highlight .vi { color: #800080; font-weight: bold; }
        .highlight .nv { color: #0000FF; font-weight: bold; }
    </style>
</head>
<body>
    <div class="highlight">
        <pre>
            <span class="k">def</span> <span class="nf">hello_world</span><span class="p">():</span>
                <span class="k">print</span><span class="p">(</span><span class="s1">&#39;Hello, World!&#39;</span><span class="p">)</span>

        <span class="nf">hello_world</span><span class="p">()</span>
            </pre>
        </div>
    </body>
</html>

上述HTML代码包含了所需的CSS样式和高亮显示的Python代码。您可以将HTML代码保存为html文件,然后在浏览器中打开,以查看漂亮的高亮显示的代码。

此外,Pygments还提供了许多其他自定义选项,例如更改代码块的背景颜色、线条号和行号的显示等。您可以根据自己的需求和偏好进行定制。

总结起来,Pygments是一个功能强大的Python库,可用于创建漂亮的代码片段,并将其嵌入到HTML、LaTeX、SVG和终端中。它支持多种语言的语法高亮显示,并提供了丰富的自定义选项,使您可以根据自己的需求创建令人赏心悦目的代码片段。