Pygments:Python 代码高亮库
在开发代码展示类应用时,如代码编辑器、文档生成器或任何需要展示源代码的场景,语法高亮是一个至关重要的功能。Pygments 是一个流行的 Python 库,用于提供语法高亮功能,支持多种编程语言,可以生成美观、易于阅读的代码格式。
一、安装 Pygments
Pygments 可以通过 pip
轻松安装。在你的 Python 环境中运行以下命令:
pip install Pygments
二、基本用法
1. 导入 Pygments
在 Python 脚本中,首先需要导入 Pygments 模块:
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import TerminalFormatter
2. 代码高亮
使用 Pygments 来高亮一段 Python 代码:
code = """
def hello_world():
print("Hello, World!")
"""
lexer = PythonLexer()
formatter = TerminalFormatter()
result = highlight(code, lexer, formatter)
print(result)
这个示例中,highlight()
函数接收代码、Lexer(PythonLexer 用于解析 Python 代码)以及 Formatter(TerminalFormatter 用于输出到终端),并输出带有高亮的代码到终端。
三、高级用法
1. 支持多种语言
Pygments 支持多种编程语言的高亮显示,你可以使用 get_lexer_by_name
根据语言名称获取适当的 Lexer。例如高亮 JavaScript 代码:
from pygments.lexers import get_lexer_by_name
code = "console.log('Hello, JavaScript!');"
lexer = get_lexer_by_name("javascript", stripall=True)
formatter = TerminalFormatter()
result = highlight(code, lexer, formatter)
print(result)
2. 自定义样式
Pygments 允许自定义样式,以满足不同的显示需求。以下示例创建了一个自定义的样式:
from pygments.style import Style
from pygments.token import Keyword, Name, Comment, String, Error, Number, Operator
class CustomStyle(Style):
default_style = ""
styles = {
Keyword: 'bold cyan',
Name: 'bold green',
Comment: 'italic red',
String: 'yellow',
Error: 'bg: red white',
Number: 'blue',
Operator: 'bold purple',
}
formatter = TerminalFormatter(style=CustomStyle)
code = """
def custom_function():
# This is a comment
print("Custom Style!")
"""
result = highlight(code, PythonLexer(), formatter)
print(result)
自定义样式通过继承 Style
类并定义 styles
字典来指定不同的语法元素的显示样式,例如 Keyword
、Name
、Comment
等。
3. 输出到 HTML
Pygments 可以将高亮后的代码输出为 HTML,适用于 Web 应用场景。下面是将代码高亮为 HTML 的示例:
from pygments.formatters import HtmlFormatter
code = """
def html_output():
return "This is highlighted in HTML"
"""
html_formatter = HtmlFormatter()
result = highlight(code, PythonLexer(), html_formatter)
print(result)
如果需要在 Web 页面中展示代码,这样的 HTML 输出非常有用,并且 HtmlFormatter
提供了丰富的配置选项,例如行号、样式自定义等。
四、实际使用案例
假设你正在开发一个在线代码编辑器或文档生成器,Pygments 可以帮助你完成如下功能:
- 高亮显示代码:根据用户选择的语言,自动进行代码高亮。
- 自定义主题:允许用户选择或自定义代码高亮的配色方案。
- 导出为 HTML:将用户的代码以高亮的形式导出为 HTML 文件,适合在网页上展示。
示例:代码高亮器
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
def generate_highlighted_html(code, language="python"):
lexer = get_lexer_by_name(language)
formatter = HtmlFormatter(full=True, linenos=True, style='colorful')
return highlight(code, lexer, formatter)
# 假设这是用户输入的代码和选择的语言
user_code = "def hello():\n print('Hello, world!')"
language = "python"
# 生成 HTML
html_result = generate_highlighted_html(user_code, language)
# 将结果保存为 HTML 文件
with open("highlighted_code.html", "w") as file:
file.write(html_result)
该示例展示了如何根据用户输入的代码和语言生成高亮的 HTML 并保存为文件。
五、总结
Pygments 是一个功能强大的 Python 代码高亮库,支持多种编程语言和灵活的样式定制。它在文档生成、代码编辑器开发以及展示代码片段的应用中具有广泛的应用场景。
主要特点:
- 多语言支持:可以轻松高亮多种编程语言。
- 自定义样式:支持用户自定义高亮配色和格式。
- 多格式输出:支持输出为 HTML、终端输出等多种格式。
通过本文的介绍,你应该能够轻松上手 Pygments,用于高效美观的代码展示。在开发代码相关应用时,Pygments 是一个非常实用的工具,可以显著提升用户体验和界面的专业性。