# -*- coding: utf-8 -*- import os import re import json import pprint TOKEN_REGEX = r"""(\d+)(-)(\d+)(\.)(.+)""" TOKEN_REGEX2 = r"""(?:\|\s*)([^\s]*)(?:\s*)(?:\|\s*)([^\s]*)(?:\s*)(?:\|\s*)([^\s]*)(?:\s*)(?:\|\s*)([^\s]*)(?:\s*)""" def md2csv(mdfile): state = 0 log_dict = {} curr_node = None for line in open(mdfile).readlines(): match = re.match(TOKEN_REGEX, line) if match: logclass1, _, logclass2, _, title = match.groups() state = 1 assert((logclass1 + '-' + logclass2) not in log_dict) curr_node = {} log_dict[logclass1 + '-' + logclass2] = curr_node # print('') # print(logclass1, logclass2, title) continue match2 = re.match(TOKEN_REGEX2, line) if match2 and state == 1: field1, field2, field3, field4 = match2.groups() if field1[0] != '-' and field1 != '字段': curr_node[field1.replace('\\', '')] = { 'short_name': field1.replace('\\', ''), 'en_name': field2.replace('\\', ''), 'desc': field4 } # print(field1 + ',' + field2 + ',' + field3 + ',' + field4) #end for # pprint.pprint(log_dict) print(json.dumps(log_dict, sort_keys=True, indent=4, separators=(',', ': '))) md2csv('/root/opensource/doc/api说明/gamelog.md')