python代码实现xmind思维导图转换为excel功能

news2024/10/6 0:54:24

目录

转换前xmind示例

运行代码转换后excel示例

python代码


转换前xmind示例

运行代码转换后excel示例

如果想要合并单元格内容,在后面一列参考输入

=B2&C2&D2&E2

python代码

from xmindparser import xmind_to_dict
import pandas as pd
from openpyxl.workbook import Workbook

# 可以设想为一个树结构,利用递归函数,获取由根至各叶子节点的路径。
def xm_parse(dic, pre_data=[]):
    """输入一个由xmindparser,转换而来的字典形式的数据,将之转换成列表"""
    title_list = []
    topic_list = []
    try:
        topics = dic.get("topics")
        title = dic.get("title")
        # 将前缀追加
        title_list.append(title)
        title_list = pre_data + title_list
        # 如果到达末尾,就返回
        if topics is None and title:
            yield title, title_list
#             print(title,title_list)
            return
        # 如果是列表,就暂存起来(若每个对象为标准的列表,即 topics= topic_list,则可以跳过该步骤)
        elif isinstance(topics, list) and title:
            for topic in topics:
                topic_list.append(topic)
    except AttributeError as e:
        print("异常结束")
        return
    if topic_list:
        for topic in topic_list:
            yield from xm_parse(topic,title_list)


def main():
    x_flie=r"转换excel前.xmind"
    out_file=r"xmind转换后3.xlsx"
    temp=[]
    max_cols=0
    json_data= xmind_to_dict(x_flie)
    #提取数据,并找出最大深度(列数)
    for i,j in xm_parse(json_data[0]['topic']):
        temp.append(j)
        max_cols= max_cols if max_cols > len(j) else len(j)
    #对缺失数据采用补全
    for i in range(len(temp)):
        temp[i] = temp[i] + (max_cols - len(temp[i])) * [None]
    result=pd.DataFrame.from_records(temp,columns=["标题-{}".format(i+1) for i in range(max_cols)])
    # result.to_excel(out_file,index=False,encoding='utf-8-sig')
    result.to_excel(out_file,index=False)
    
if __name__ == '__main__':
    main()

参考文章如何利用python将xmind转为Excel?_python xmind转excel-CSDN博客

因为在执行原代码时候遇到了报错,排查问题后,我修改了1处代码。如下

新导入openpyxl包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1664141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务项目实战-黑马头条(十三):持续集成

文章目录 项目部署_持续集成1 今日内容介绍1.1 什么是持续集成1.2 持续集成的好处1.3 今日内容 2 软件开发模式2.1 软件开发生命周期2.2 软件开发瀑布模型2.3 软件的敏捷开发 3 Jenkins安装配置3.1 Jenkins介绍3.2 Jenkins环境搭建3.2.1 Jenkins安装配置3.2.2 Jenkins插件安装3…

微信投票源码系统至尊版 吸粉变现功能二合一

源码简介 微信投票系统在营销和社交互动中发挥着多方面的作用,它能够提升用户的参与度和品牌曝光度,还是一种有效的数据收集、营销推广和民主决策工具。 分享一款微信投票源码系统至尊版,集吸粉变现功能二合一,全网独家支持礼物…

TEA: Temporal Excitation and Aggregation for Action Recognition 论文阅读

TEA: Temporal Excitation and Aggregation for Action Recognition 论文阅读 Abstract1. Introduction2. Related Works3. Our Method3.1. Motion Excitation (ME) Module3.1.1 Discussion with SENet 3.2. MultipleTemporal Aggregation(MTA) Module3.3. Integration with Re…

【RAG 论文】Contriever:对比学习来无监督训练文本嵌入模型

论文:Unsupervised Dense Information Retrieval with Contrastive Learning ⭐⭐⭐⭐⭐ Facebook Research, arXiv:2112.09118 Code:github.com/facebookresearch/contriever 一、论文速读 本文使用对比学习的方法来对文本检索模型做无监督学习训练&am…

HTTP基础概念和HTTP缓存技术

什么是HTTP HTTP是超文本传输协议,主要分为三个部分:超文本、传输、协议。 超文本是指:文字、图片、视频的混合体。传输是指:点与点之间的信息通信。协议是指:通信时的行为规范或约定 HTTP常见字段 字段名 解释 例…

Mac IDEA 自动补全mybatis sql语句

导航 Mac IDEA 自动补全mybatis sql语句一、点击IDEA 右侧Database选项二、选择添加对应数据库三、输入数据库信息和方案四、输入数据库信息和方案五、成功 Mac IDEA 自动补全mybatis sql语句 背景: 想在Mapper中,能够实现自动检索数据库表和对应的字段…

暗区突围加速器哪个好 暗区突围国际服加速器 暗区突围PC加速器

《暗区突围》自曝光以来,便以其紧张刺激的战术竞技风格和细腻真实的战场环境,在游戏界掀起了新一轮的热议狂潮。这款游戏将玩家置身于一片神秘而危机四伏的区域,任务简单却极具挑战——深入敌后,搜刮资源,然后在重重围…

LINUX 入门 8

LINUX 入门 8 day10 20240507 耗时:90min 有点到倦怠期了 课程链接地址 第8章 TCP服务器 1 TCP服务器的介绍 开始讲服务器端,之前是客户端DNShttps请求 基础:网络编程并发服务器:多客户端 一请求,一线程 veryold…

物联网SCI期刊,潜力新刊,审稿速度快,收稿范围广泛!

一、期刊名称 Internet of Things 二、期刊简介概况 期刊类型:SCI 学科领域:物联网 影响因子:5.9 中科院分区:3区 出版方式:订阅模式/开放出版 版面费:选择开放出版需支付$2310 三、期刊征稿范围 I…

终端安全管理防护软件排行榜2024(四大终端监控软件推荐)

你的企业存在这些问题吗? 数字化转型的深入和远程办公模式的普及,企业对终端安全管理的需求日益凸显。 确保终端设备的安全性不仅关乎数据保护、业务连续性,更直接影响企业的声誉与合规性。 2024年终端安全防护软件排行榜,有谁荣…

【驱动】SPI

1、简介 SPI(Serial Peripheral interface)串行外设接口。 特点: 高速:最大几十M,比如,AD9361的SPI总线速度可以达到40MHz以上全双工:主机在MOSI线上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它一主多从:主机产生时钟信号,通过片选引脚选择…

2024第十六届“中国电机工程学会杯”数学建模A题B题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

vue3+TS或JS, 实现粒子特效 @tsparticles/vue3

在跟着B站视频BV11s4y1a71T学习时,使用到了粒子效果,但是以下这种情况只适用于项目是基于typescript的写法,否则无法实现。 粒子效果 VUE3TStsparticles/vue31、安装2、main.ts 引入3、App.vue4、效果 VUE3JS非最新版1、安装低版本的vue3-pa…

流量分析(一)

数据库类流量分析 MySQL流量 常规操作,查找flag ctfhub{} 注意要选择字符集 Redis流量 查找ctfhub结果没找到 尝试把其变成十六进制继续进行查找 看到了前半段flag 接着往下看 找到了后半段的flag MongoDB流量 还是一样查找ctfhub 字符串没找到 转成十六进制也没…

Leetcode—295. 数据流的中位数【困难】

2024每日刷题&#xff08;132&#xff09; Leetcode—295. 数据流的中位数 实现代码 class MedianFinder { public:MedianFinder() {}void addNum(int num) {if(maxHeap.empty() || num < maxHeap.top()) {maxHeap.push(num);} else {minHeap.push(num);}if(maxHeap.size(…

算法学习笔记(2)-前缀和

##前缀和 指的是某序列的前n项和&#xff0c;在数学上我们可以理解称为数列的前n项和。前缀和是一种预处理&#xff0c;用于降低查询的时间复杂度。 ##一维前缀和 有一个一维数组x和该数组的前缀和数组y&#xff0c;则x和y具有以下关系&#xff1a; #python代码示例 #关系&am…

WorkPlus im(即时通讯)集成平台助力政企数字化转型升级

随着互联网技术的不断发展&#xff0c;企业内部通讯软件已经成为企业日常运营中不可或缺的一部分。企业IM&#xff08;即时通讯&#xff09;和移动门户作为企业内部通讯软件的关键组成部分&#xff0c;为企业提供更加高效、便捷的通讯方式&#xff0c;提高了企业的运营效率。 针…

ETLCloud中如何执行Java Bean脚本

ETLCloud中如何执行Java Bean脚本 在ETLCloud这一强大的数据集成和转换平台中&#xff0c;执行Java Bean脚本的能力为其增添了更多的灵活性和扩展性。Java Bean脚本不仅仅是一段简单的代码&#xff0c;而是一种强大的工具&#xff0c;可以帮助用户定制和优化数据处理的每一个环…

笨方法自学python(六)-字符串和文本

上一节中出现了\n&#xff0c;这个作用是换行。\后面带不同字符有不同的作用&#xff0c;我们先简单了解几个&#xff0c; 使用反斜杠 \ (back-slash) 可以将难打印出来的字符放到字符串。针对不同的符号有很多这样的所谓“转义序列(escape sequences)”&#xff0c;我们来练习…

IDEA 常见设置问题

OutOfMemoryError IDEA 第一次运行项目时&#xff0c;会报错误 - java.lang.OutOfMemoryError: Java heap space / insufficient memory&#xff0c;解决办法是&#xff1a; 将图示部分由默认的 700 改为 2048。 import * 工程lint检查时不允许使用import *&#xff0c;IDE…