人工智能訓練通常需要使用文本格式,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位