分析

素材文件在文末

观察nbmx文件,猜测是压缩文档,尝试解压,得到content.json文件。观察content.json,部分内容如下:

{"data": {"expandState": "expand","text": "先进制造系统(Advanced Manufacturing System)","font-family": "黑体, SimHei","font-weight": "bold"},"children": [{"data": {"text": "第 1 章","connect-color": "#7FBADF","expandState": "expand"},"children": [{"data": {"text": "AMS特点","connect-color": "#7FBADF","expandState": "expand"},"children": [{"data": {... ...

思路

  1. 解压nbmx思维导图文件
  2. 读取content.json
  3. 解析json,递归读取每个"text"键的值,同时记录其层次深度
  4. 以markdown格式保存为文件

实现

#--encoding:utf-8--
# Author: Allen Lv
# Time: 2021-05-14
# 转载请著名出处import jsondef getText(path: str) -> str:'''获取content.json的文本'''text = ""with open(path, "r", encoding="utf-8") as f:text = f.read()return textdef pickLines(info: dict, lines: list, depth=1) -> list:'''读取json字典,把每条信息保存到列表中'''# 取出信息行,然后标记层次ln = "${}$ {}".format(depth, info["data"]["text"])lines.append(ln)# 递归取得信息行if info.get("children", 0):for child_info in info["children"]:pickLines(child_info, lines, depth+1)def mdFormat(lines: list) -> str:'''把信息行逐个格式化为md格式'''md_lines = []for line in lines:# 取得层次号i = int(line[1])symbol = "$" + str(i) + "$"new_symbol = "ERROR"# 前三层都是标题,之后都是无序列表if i <= 3:new_symbol = "#" * ielse:new_symbol = "  " * (i-4) + "-"# 替换换行符_line = line.replace("\n", "\\n")# 替换层次标记符new_ln = _line.replace(symbol, new_symbol)md_lines.append(new_ln)       # 返回md格式文本return "\n\n".join(md_lines)def saveMD(path: str, md_text: str):'''保存到md文件'''with open(path, "w", encoding="utf-8") as f:f.write(md_text)def main():json_path = r".\content.json"json_text = getText(json_path)info = json.loads(json_text)lines = []pickLines(info, lines)md_text = mdFormat(lines)md_path = r".\思维导图文字提取.md"saveMD(md_path, md_text)# 程序顺利结束print(200)main()

素材

素材链接
提取码: c6k7

提取坚果云思维导图的文字到md文件相关推荐

  1. 阿里云思维导图系列(五)阿里云关系型数据库产品全家福

    今天是初五小年,花了一天时间给阿里云关系型数据库产品整理了个思维导图全家福!

  2. 电脑常用工具(阅读代码、文件搜索、思维导图、图片处理、文件比较、流程图、桌面效率工具)

    目录 1.阅读代码--Notepad++ 2.编写代码--Source Insight 3.代码便捷器--sublime text3 4.本地搜索文件--Everything 5.思维导图软件--Xm ...

  3. 计算机思维导图pdf百度云资源,计算机思维导图

    坚果云思维导图对提高教育质量和组织培训质量都具有重要的价值,它已经成为许多新的学习方法中的重要工具,如,研究性学习与行动学习等,运用计算机思维导图有助于提高学习者学习计算机知识,快速达成学习的目标 1 ...

  4. asp.net 两个控件放一行_思维导图?试试这两个宝藏网站吧

    #文章首发于公众号"如风起". 原文链接: 思维导图试试这两个网站吧​mp.weixin.qq.com Hello~,大家好,今天小编向大家介绍两款关于绘制思维导图的软件. 在日常 ...

  5. xmind各版本区别_思维导图工具 XMind 出了一个高颜值版:XMind ZEN

    XMind 对于思维导图的使用者来说不会陌生.作为一款优质的国产思维导图软件,它不仅有强大的功能,而且还可以同时在 macOS.Windows 和 Linux 上使用.不过,跨平台的特性也为软件带来了 ...

  6. 怎么才能画出漂亮的思维导图

    众所周知,思维导图可以协助我们高效的完成工作和学习,那么怎么画思维导图漂亮呢?今天小编就在这里告诉你答案,不但漂亮而且速度快,更能清除的表达你的想法和理念,准备好小板凳,知识点来了: 1.首先打开迅捷 ...

  7. 工具类 - 思维导图

    <>   思维导图简介: 百度百科思维导入的定义 思维导图.  在我们的工作和生活中可以经常使用思维导图, 有时候会有一些意想不到的成果.  思维导图的分类: 全文思维导图 :  只有文字 ...

  8. SimpleMind Pro for Mac(思维导图)中文完整版

    SimpleMind for Mac是Mac平台上非常好用的一款思维导图软件,可将您的Mac变成头脑风暴,创意收集和思维结构设备,simplemind完整版无缝地图同步,可以选择多种思维导图样式,还可 ...

  9. 王道考研 操作系统知识点汇总(目录+思维导图)

    第一章 计算机系统概述 文章目录 前言 1.1.1 操作系统的概念.功能和目标 思维导图 本节内容 1.1.2操作系统的特征 思维导图 本节内容 1.1.3操作系统的发展与分类 思维导图 本节内容 1 ...

最新文章

  1. 【枚举】【SPFA】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem I. Iron and Coal
  2. MQTT-SN协议乱翻之消息格式
  3. Combox使用的一些技巧
  4. LeetCode_database刷题记录(595. 大的国家)
  5. iOS开发 mac证书无法展开
  6. 设计模式(读书笔记)
  7. 替换Mac的home brew源
  8. micropython入门指南pdf_一文了解MicroPython
  9. Newland Plan
  10. php文件同名怎么办,php根据文件不同关闭同名进程
  11. 变量声明和定义及extern 转载
  12. RDKit | RDKit中处理分子Mol对象
  13. RNA剪接体 Spliceosome | 冷冻电镜 | 结构生物学
  14. android 京东平板布局,京东商城上线Android Pad客户端 完美布局移动终端
  15. IDEA 中 project窗口,不显示项目工程目录,解决方法
  16. android手机游戏-三国无双(二)
  17. Matlab基于动态粒子群算法的动态环境寻优算法 基本粒子群算法首先是在解空间中随机初始化所有粒子
  18. C++随机生成字符串,亲测可用,简单易懂
  19. 轩小陌的Python笔记-day28 索引、函数及存储过程
  20. kube-prometheus-stack 部署

热门文章

  1. 商用蓝牙定位算法剖析
  2. 4. Netty+SpringBoot实现IM服务 之 用户与channel绑定
  3. 名词:PDCA环,戴明环
  4. 便利贴--46{HbuildX连接夜神模拟器}
  5. 基于GNS3的AAA服务器的授权
  6. Sqlserver行转列pivot()
  7. U-boot引导流程分析二
  8. 编译原理 运行时的存储组织及管理
  9. 【无标题】洛必塔法则的使用条件
  10. 详解FLAS骨骼绑定教程