用python实现markdown转html

1. 前言

现在markdown已经是非常常用的记录工具了,整齐的排版、代码高亮、图片表格样样齐全,同时也支持html标签,是非常好用的一种工具(语法)。

那么今天来分享一下使用python实现markdown文件转为html,而且也能很好显示代码和整齐的排版。

2. 正文

markdown
python-markdown-math
markdown_checklist
pymdown-extensions

本文的主要功能是讲markdown转为html,在上述博客中还带有转换为pdf的功能,但个人觉得转为pdf没什么必要,在此就没添加上了。除此之外,在原有的基础上添加了文章目录的小模块,算是一点小小的改进吧。

这里就直接上代码了>>>

import os
try:
    from markdown import markdown
except ModuleNotFoundError as e:
    os.system("pip install markdown")
    os.system("pip install python-markdown-math")
    os.system("pip install markdown_checklist")
    from markdown import markdown

try:
    from pymdownx import superfences
except ModuleNotFoundError as e:
    os.system("pip install pymdown-extensions")
    from pymdownx import superfences

class mdtox:
    def __init__(self, md_filename, encoding='utf-8'):
        self.md_filename = md_filename
        self.encoding = encoding
        self.__args()

    def __args(self):
        self.html = '''

                {}

                    {}

        '''

        # 扩展配置
        self.extensions = [
            'toc',  # 目录,[toc]
            'extra',  # 缩写词、属性列表、释义列表、围栏式代码块、脚注、在HTML的Markdown、表格
        ]
        third_party_extensions = [
            'mdx_math',  # KaTeX数学公式,$E=mc^2$和$$E=mc^2$$
            'markdown_checklist.extension',  # checklist,- [ ]和- [x]
            'pymdownx.magiclink',  # 自动转超链接,
            'pymdownx.caret',  # 上标下标,
            'pymdownx.superfences',  # 多种块功能允许嵌套,各种图表
            'pymdownx.betterem',  # 改善强调的处理(粗体和斜体)
            'pymdownx.mark',  # 亮色突出文本
            'pymdownx.highlight',  # 高亮显示代码
            'pymdownx.tasklist',  # 任务列表
            'pymdownx.tilde',  # 删除线
        ]
        self.extensions.extend(third_party_extensions)
        self.extension_configs = {
            'mdx_math': {
                'enable_dollar_delimiter': True  # 允许单个$
            },
            'pymdownx.superfences': {
                "custom_fences": [
                    {
                        'name': 'mermaid',  # 开启流程图等图
                        'class': 'mermaid',
                        'format': superfences.fence_div_format
                    }
                ]
            },
            'pymdownx.highlight': {
                'linenums': True,  # 显示行号
                'linenums_style': 'pymdownx-inline'  # 代码和行号分开
            },
            'pymdownx.tasklist': {
                'clickable_checkbox': True,  # 任务列表可点击
            }
        }

    def to_html(self, html_name):
        try:
            with open(self.md_filename, "r", encoding=self.encoding) as file_md:
                md_text = file_md.read()
        except Exception as e:
            print("", e)
            return False

        title = '.'.join(os.path.basename(self.md_filename).split('.')[:-1])
        html_text = markdown(md_text, output_format='html', extensions=self.extensions, extension_configs=self.extension_configs)  # MarkDown转HTML
        self.html = self.html.format(title, html_text)

        try:
            with open(html_name, 'w', encoding=self.encoding) as file_html:
                file_html.write(self.html)
        except Exception as e:
            print("", e)
            return False

        return True

这里我封装了下载依赖库,所以只要运行python代码即可。其中的js文件、css文件都在我的博客文件中,所以只要有网都可以轻松访问生成的html文件,若想离线使用,就把需要的文件下载到本地,然后引入即可。

本测试与上述代码在同个文件中
if __name__ == '__main__':
    md_name = "E:/java.md"
    html_name = "E:/java.html"

    if(mdtox(md_name).to_html(html_name)):
        print('转换完成')

Original: https://www.cnblogs.com/bpf-1024/p/14118167.html
Author: 步平凡
Title: 用python实现markdown转html

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/686158/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球