Python编程:使用pygments高亮代码

简介: Python编程:使用pygments高亮代码

参考文档:http://pygments.org/

安装

python环境 : python3

Pygments版本:2.2.0

pip install Pygments

命令行使用

第一步: 准备代码

# -*- coding: utf-8 -*-
# @Date    : 2018-10-17
# @Author  : Peng Shiyu
def hello():
    print("hello world!")
if __name__ == '__main__':
    hello()

第二步:生成html

$ pygmentize -f html -o hello.html hello.py

参数:

-f html 指明需要输出html文件

-o hello.html 指明输出的文件名

hello.py 就是输入文件了

第三步:生成css

$ pygmentize -f html -a .highlight -S default > highlight.css

-a .highlight指所有css选择器都具有.highlight这一祖先选择器

-S default就是指定所需要的样式了,各位可以对各种样式都尝试一下。在官网上是可以直接尝试的哦!

> pygments.css将内容输出到pygments.css文件中

第四步:引用css文件

hello.html文件中引用css文件

<link rel="stylesheet" href="highlight.css">

浏览器中打开hello.html的最终效果:

image.png

代码中使用

刚开始查看官方文档,代码复制下来不能用,又自己研究了一下

# -*- coding: utf-8 -*-
# @Date    : 2018-10-17
# @Author  : Peng Shiyu
from pygments import highlight
from pygments.formatters.html import HtmlFormatter
from pygments.lexers import get_lexer_by_name
from pygments.lexers.python import PythonLexer
code = 'print("hello world")'
# 二选一即可
# lexer = PythonLexer()
lexer = get_lexer_by_name("python")
# 指定风格
formatter = HtmlFormatter(style="xcode")
# 获取html
html = highlight(code, lexer, formatter)
print(html)
"""
<div class="highlight">
    <pre>
        <span></span>
        <span class="k">print</span>
        <span class="p">(</span>
        <span class="s2">&quot;hello world&quot;</span>
        <span class="p">)</span>
        </pre>
</div>
"""
# 获取css
css = formatter.get_style_defs('.highlight')
print(css)
"""
.highlight .hll { background-color: #ffffcc }
.highlight  { background: #ffffff; }
.highlight .c { color: #177500 } /* Comment */
.highlight .err { color: #000000 } /* Error */
...
"""

将所输出的文本分别存入html、css文件,并在html中对css文件引用(如命令行中使用),最后也就呈现了一样的效果(需要将code变量换为命令行中使用的待格式化代码)

查看支持的风格

from pygments.styles import STYLE_MAP
for key in STYLE_MAP.keys():
    print(key)
"""    
default
emacs
friendly
colorful
autumn
murphy
manni
monokai
perldoc
pastie
borland
trac
native
fruity
bw
vim
vs
tango
rrt
xcode
igor
paraiso-light
paraiso-dark
lovelace
algol
algol_nu
arduino
rainbow_dash
abap
"""

以上风格带入HtmlFormatter中就能更改

参考文章

  1. Pygments Introduction and Quickstart
  2. 使用Pygments来实现代码高亮
相关文章
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
262 100
|
2月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
422 95
|
3月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
266 104
|
3月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
465 99
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
157 88
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
211 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
479 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
295 3
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
302 0

推荐镜像

更多