DohGRzbID

23朵毒蘑菇

python使用markdown库把markdown转html时关于代码块高亮时遇到的大坑

原文章迁移

python|markdown|

2020-12-23 10:07:00 已有版本 1 个 show:0.56kTYPE: blog

最近需要在python下把markdown转化为html,网上看使用markdown(一个python库,只是名字也叫markdown)的人很多于是就用了这个库,本来一切正常,在转化代码块时遇到了大坑。

我首先是打开CMD,安装markdown

pip install markdown

然后这样使用

import markdown
extensions = [ #根据不同教程加上的扩展
    'markdown.extensions.extra',
    'markdown.extensions.codehilite', #代码高亮扩展
    'markdown.extensions.toc',
    'markdown.extensions.tables',
    'markdown.extensions.fenced_code',
]
if __name__=="__main__":
    str_data = 你的markdowm文本 (这里加入markdown文章里不好显示就没写了,自己找一段就行)
    print(markdown.markdown(str_data,extensions=extensions))

结果打印出来的的标签就只有pre和code这两个标签,内容就不贴出来了,如果要使代码高亮,怎么着也得有很多span标签吧,结果根本没有,代码原封不动的放在code标签里。
真是把我坑惨了,教程上都说要用Pygments这个库来设置代码高亮,说是可以自动生成高亮的css,我想着我转化的html文本里连相应的标签都没有,无论来多少css也没用呀,就一直没管这个Pygments库了,折磨了我好久,咋写都没用,然而,就是TMD这么坑,还真需要这个库,当我安装好后,代码啥的都没改居然可以了,无语!应该是它内部会去调用,也不说清楚。

安装Pygments

pip install Pygments

需要高亮css的可以用它自动生成,会生成到你当前目录

pygmentize -S default -f html -a .codehilite > default.css

当我再次运行我之前的代码时,生成的html文本里居然就有span标签了,加上自动生成的css就可以实现代码高亮了,真是够可以的呀,啥教程都没说出这个问题,万一有的小伙伴想自己写样式,就只是想转一下html岂不是要在这个坑里爬不起来了呀!

真的坑