Python开发的Markdown目录提取器,快速将md转思维导图(附gui,可直接下载)

Posted 小小明-代码实体

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发的Markdown目录提取器,快速将md转思维导图(附gui,可直接下载)相关的知识,希望对你有一定的参考价值。

大家好,我是小小明。

最近有不少博主有需求,需要快速提取Markdown文档中的目录并转换为xmind思维导图,据说官方提供了用python直接生成xmind思维导图的方法,但有人反映生成的文件打不开。那么基于这个现状,我将开发一个效率辅助工具,帮助大家快速将Markdown转换为xmind。

软件使用介绍

首先打开程序,界面如下:

我们可以先选择被加载的Markdown文档所在的文件夹:

此时再点击加载按钮:

该目录下的所有md文件就都被加载到列表中。我们还可以再勾选 递归 复选框后进行加载:

此时包含子文件就都被加载到列表中。

如何将获取指定Markdown文件对应的目录呢?

只需单击对应的列表项即可:

此时,Markdown目录已经被复制到剪切版,此时我们可以粘贴到xmind软件中。打开xmind软件后,删除多余节点后,选中中心节点,再粘贴:

可以看到结果已经成为比较完美的思维导图,此时我们只需修改中心节点的名称后保存即可。

当然有部分Markdown文档比较特殊,比如:

我们希望把一级标题去掉,其他级别的标题提高一级,可以将最小标题级别修改为2之后再单击该文章:

此时再去xmind粘贴就能获取想要的效果。

当然对于列表中的文件,我们还可以批量导出目录文件,点击批量导出即可。点击批量导出后,先选择一个保存的位置,选择后则开始导出:

若点击后取消保存文件夹的选择就会终止导出任务的执行。

开发代码

先开发一个提取Markdown目录的功能:

import cchardet

def load_md(filename, min_level=1):
    with open(filename, "rb") as f:
        md_bytes = f.read()
    encoding = cchardet.detect(md_bytes)['encoding']
    if encoding is None:
        encoding = "u8"
    md = md_bytes.decode(encoding)
    code_area = False
    result = []
    for line in md.splitlines():
        if line.startswith("```"):
            code_area = not code_area
        if code_area or not line.startswith("#") or line.find(" ") == -1:
            continue
        num_sign, title = line.split(maxsplit=1)
        if not title:
            continue
        tab_num = len(num_sign) - min_level
        if tab_num < 0:
            continue
        result.append("\\t" * tab_num + title)
    return result

这里我使用了cchardet进行编码识别,未使用过的读者需要安装:

pip install cchardet

上述代码的原理就是按行读取Markdown文本,碰到#开头而且含空格的文本就认为是含标题的行,同时排除掉#是处于代码区域的情况。

其他代码,感兴趣的童鞋自行研究噢,完整代码和已打包好的工具请到codeChina下载。

工具和开源代码下载地址:

https://codechina.csdn.net/as604049322/python_gui

以上是关于Python开发的Markdown目录提取器,快速将md转思维导图(附gui,可直接下载)的主要内容,如果未能解决你的问题,请参考以下文章

Python脚本:快速将 Spring 在线官方文档格式化为 Markdown 格式文档

Python 开发轻量级爬虫06

一个快速的python HTML解析器[关闭]

[python] to FaceRecognizeSys [Doing...]

[python] to FaceRecognizeSys [Doing...]

Python • 图片识别pytesseract快速识别提取图片中的文字