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

使用Pygments.formatters在Python中实现代码着色和行号显示

发布时间:2023-12-17 22:51:09

Pygments是一个用于代码着色和高亮显示的Python库。它支持许多编程语言,并且可以输出HTML、RTF和其他格式。Pygments提供了一个Formatter类,用于将着色的代码转化为不同格式的输出。

下面我们将使用Pygments来实现代码着色和行号显示的功能,并且给出一个使用示例。

首先,我们需要导入highlightHtmlFormatter类,以及一些其他必要的模块:

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

我们还可以使用get_lexer_by_name函数来获取对应编程语言的Lexer对象。例如,要着色Python代码,我们可以使用get_lexer_by_name('python')

然后,我们可以定义一个函数来将代码着色并添加行号:

def highlight_code(code, language):
    lexer = get_lexer_by_name(language)
    formatter = HtmlFormatter(linenos=True)
    return highlight(code, lexer, formatter)

在这个函数中,我们首先获取对应编程语言的Lexer对象,然后创建一个HtmlFormatter对象,并将linenos参数设置为True以显示行号。最后,我们使用highlight函数将代码着色并转化为HTML格式的输出。

现在,我们可以使用这个函数来着色和显示代码。下面是一个使用示例:

code = '''
def fibonacci(n):
    if n <= 1:
        return n
    else:
        return fibonacci(n-1) + fibonacci(n-2)
'''

highlighted_code = highlight_code(code, 'python')
print(highlighted_code)

运行这段代码,你将会看到如下的输出:

<div class="highlight">
<pre><span class="lineno">1</span> <span style="color: #000000; background-color: #ffffff">def </span><span style="color: #008800; font-weight: bold">fibonacci</span><span style="color: #000000; background-color: #ffffff">(</span><span style="color: #0000dd">n</span><span style="color: #000000; background-color: #ffffff">):</span>
<span class="lineno">2</span>     <span style="color: #000000; background-color: #ffffff">if </span><span style="color: #0000dd">n</span><span style="color: #000000; background-color: #ffffff"> &lt;= </span><span style="color: #000080; font-weight: bold">1</span><span style="color: #000000; background-color: #ffffff">:</span>
<span class="lineno">3</span>         <span style="color: #000000; background-color: #ffffff">return </span><span style="color: #0000dd">n</span>
<span class="lineno">4</span>     <span style="color: #000000; background-color: #ffffff">else:</span>
<span class="lineno">5</span>         <span style="color: #000000; background-color: #ffffff">return </span><span style="color: #008800; font-weight: bold">fibonacci</span><span style="color: #000000; background-color: #ffffff">(</span><span style="color: #0000dd">n</span><span style="color: #000000; background-color: #ffffff">-</span><span style="color: #000080; font-weight: bold">1</span><span style="color: #000000; background-color: #ffffff">) + </span><span style="color: #008800; font-weight: bold">fibonacci</span><span style="color: #000000; background-color: #ffffff">(</span><span style="color: #0000dd">n</span><span style="color: #000000; background-color: #ffffff">-</span><span style="color: #000080; font-weight: bold">2</span><span style="color: #000000; background-color: #ffffff">)</span>
</pre></div>

这段输出的HTML代码会将原始代码着色并显示行号。

以上就是使用Pygments实现代码着色和行号显示的方法,并给出一个使用示例。你可以根据需要对代码进行修改和定制,以满足自己的需求。