人工智能训练通常需要使用文本格式,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:
pass
dictToTextList(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位