人工智能训练通常需要使用文本格式,xmind作为一种常规格式不好进行解析,那如何把xmind转换为txt格式呢?
软件信息
python
python -v
Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32
依赖库
pip install xmindparser==1.0.9
程序脚本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os,re
from xmindparser import xmind_to_dict,xmind_to_json
def xmindToTextFile(x_file=r'weltestDemo.xmind'):filename=x_file.strip('.xmind')dict_data = xmind_to_dict(x_file)resultlist = []def dictToTextList(input_dict, pre):if isinstance(input_dict, dict):#if (len(input_dict.keys())==1 and list(input_dict.keys())[0]=="title") or (len(input_dict.keys())==2 and list(input_dict.keys())==['title','makers']):if (len(input_dict.keys())==1 and list(input_dict.keys())[0]=="title") or (len(input_dict.keys())==2 and list(input_dict.keys())==['title','makers']):pre = pre + str(input_dict['title'])resultlist.append(re.sub(r'[\n\r]*','',pre)+'\n')else:for key in input_dict.keys():value = input_dict.get(key)if (str(key) == "title"):pre = pre + str(value)+ "|#|"if isinstance(value, dict):dictToTextList(value, pre)elif isinstance(value, list):for item in value:dictToTextList(item, pre)elif isinstance(input_dict, list):#print('list'+str(input_dict))for item in input_dict:dictToTextList(item, pre)elif isinstance(input_dict, str):if len(input_dict) > 0:passdictToTextList(dict_data,"")if len(resultlist)>0:if os.path.exists(filename+'.txt'):os.remove(filename+'.txt')with open(filename+'.txt','a',encoding='UTF-8') as txtfile:txtfile.writelines(resultlist)else:with open(filename+'.txt','a',encoding='UTF-8') as txtfile:txtfile.writelines(resultlist)xmindToTextFile(x_file=os.path.abspath('weltestDemo.xmind'))
操作演示
weltestDemo.xmind
执行命令
调整脚本中文件名称为“weltestDemo.xmind”,可以依据自己需要进行调整
如果想批量执行指定目录下的所有xmind文件可以调整为如下:
for item in os.listdir('./xmindfile'):#print(f'./xmindfile/{item}')if item.endswith('.xmind'):file_name=f'./xmindfile/{item}'abs_name = os.path.abspath(file_name)print(abs_name)xmindToTextFile(abs_name)
最后结果
weltestDemo|#|weltest|#|静态界面|#|输入|#|长度|#|不超过四位
weltestDemo|#|weltest|#|静态界面|#|输入|#|长度|#|不超过五位
weltestDemo|#|weltest|#|静态界面|#|输入|#|长度|#|不超过6位
weltestDemo|#|weltest|#|静态界面|#|输入2|#|不超过四位
weltestDemo|#|weltest|#|静态界面|#|输入2|#|不超过五位
weltestDemo|#|weltest|#|静态界面|#|输入2|#|不超过6位
weltestDemo|#|weltest|#|功能测试|#|输入|#|长度|#|不超过四位
weltestDemo|#|weltest|#|功能测试|#|输入|#|长度|#|不超过五位
weltestDemo|#|weltest|#|功能测试|#|输入|#|长度|#|不超过6位
weltestDemo|#|weltest|#|功能测试|#|输入2|#|不超过四位
weltestDemo|#|weltest|#|功能测试|#|输入2|#|不超过五位
weltestDemo|#|weltest|#|功能测试|#|输入2|#|不超过6位