数据解析方法、装置、电子设备及存储设备制造方法及图纸

技术编号:37559126 阅读:17 留言:0更新日期:2023-05-15 07:41
本申请的实施方式提供了一种数据解析方法、装置、电子设备及存储设备。该数据解析方法包括:获取数据文件;数据文件包含相互关联的若干数据元素;基于数据文件构建字典树;基于字典树确定目标数据元素所处的数据链;基于目标数据元素所处的数据链生成分支数据。本申请提供的技术方案,能够方便地重构出目标数据元素所对应的数据链,并且能够实现在原有数据链上新增分支数据的功能,为数据文件的复盘或者增添新思路提供便利,提升数据的解析效率。提升数据的解析效率。提升数据的解析效率。

【技术实现步骤摘要】
数据解析方法、装置、电子设备及存储设备


[0001]本申请的实施方式涉及数据处理领域,更具体地,本申请的实施方式涉及数据解析方法、装置、电子设备及存储设备。

技术介绍

[0002]本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
[0003]随着在线素质教育在我国的快速发展,各个棋类的在线平台如雨后春笋般层出不穷。在国际象棋中,经常会有悔棋或者复盘等情况发生,此时则需要生成分支走法。PGN是指“可移植式棋局记号法”(Portable Game Notation),是一种以ASCII文本文件表示国际象棋棋局数据的标准设定。但是,假若普通地将PGN进行链式解析的话,在面对生成分支走法的需求时,由于链式结构和分支走法数据结构之间是天然不匹配的,因此需要额外做大量的分割、解析、插入计算,而且随着分支走法层级的加深,计算量呈现指数增长,代码的可用性、可读性、可维护性极差,无法高效地实现生成分支走法的功能。
[0004]有鉴于此,亟需提出一种能够对PGN进行解析的,且能够实现生成分支走法功能的数据解析方法,有利于迅速准确重现棋盘局面信息,便于生成新走法。

技术实现思路

[0005]为克服相关技术中存在的问题,本申请的实施方式期望提供一种数据解析方法、装置、电子设备及存储设备,该数据解析方法,能够方便地重构出目标数据元素所对应的数据链,并且能够实现在原有数据链上新增分支数据的功能,为数据文件的复盘或者增添新思路提供便利,提升数据的解析效率。
[0006]在本申请实施方式的第一方面中,提供了一种数据解析方法,包括:
[0007]获取数据文件;数据文件包含相互关联的若干数据元素;
[0008]基于数据文件构建字典树;
[0009]基于字典树确定目标数据元素所处的数据链;
[0010]基于目标数据元素所处的数据链生成分支数据。
[0011]在本申请的一个实施例中,数据文件为PGN文件;
[0012]基于数据文件构建字典树,包括:
[0013]对PGN文件进行字符解析,得到PGN头部信息以及PGN记号数据;
[0014]基于PGN记号数据确定记号序列;
[0015]分别基于记号序列中的各个记号元素创建各个记号元素对应的树节点;
[0016]创建空节点作为字典树的根节点;
[0017]基于根节点以及各个记号元素对应的树节点构建字典树。
[0018]在本申请的一个实施例中,分别基于记号序列中的各个记号元素创建各个记号元素对应的树节点,包括:
[0019]若当前记号元素为走棋位置信息,则创建当前记号元素对应的树节点,并在当前记号元素对应的树节点中记录树节点携带信息,树节点携带信息包括字符信息、子节点数组、父节点以及历史字符串信息;并且在当前记号元素对应的树节点的父节点的子节点数组中添加当前记号元素对应的树节点;
[0020]若当前记号元素为左圆括号,则不创建当前记号元素对应的树节点,将当前记号元素的上一记号元素推入预设记号栈中,将上一记号元素对应的树节点的父节点作为前记号元素的下一记号元素的父节点;
[0021]若当前记号元素为右圆括号,则不创建当前记号元素对应的树节点,将预设记号栈的栈顶记号元素推出,并将栈顶记号元素作为当前记号元素的下一记号元素的父节点。
[0022]在本申请的一个实施例中,基于PGN记号数据确定记号序列,包括:
[0023]通过正则表达式依次匹配得到PGN记号数据中的每一记号元素,形成记号序列。
[0024]在本申请的一个实施例中,对PGN文件进行字符解析,包括:
[0025]验证PGN文件的左中括号以及右中括号的合法性;
[0026]若PGN文件合法,则基于左中括号以及右中括号在PGN文件中提取PGN头部信息;以及
[0027]基于左中括号以及右中括号在PGN文件中提取PGN记号数据。
[0028]在本申请的一个实施例中,验证PGN文件的左中括号以及右中括号的合法性,包括:
[0029]维护左中括号栈、右中括号栈以及中括号总数栈;
[0030]依次扫描PGN文件中的所有字符;
[0031]若扫描至左中括号,则向中括号总数栈中推入一个标志;
[0032]若扫描至右中括号,则在中括号总数栈中推出一个标志;
[0033]若扫描至右中括号时中括号总数栈为空,或在扫描完毕时中括号总数栈不为空,则确定PGN文件不合法。
[0034]在本申请的一个实施例中,基于左中括号以及右中括号在PGN文件中提取PGN头部信息,包括:
[0035]在PGN文件中搜索每一左中括号,以及与每一左中括号匹配的每一右中括号;
[0036]分别对每一对匹配的左中括号和右中括号之间的字符进行提取,得到PGN头部信息。
[0037]在本申请的一个实施例中,基于左中括号以及右中括号在PGN文件中提取PGN记号数据,包括:
[0038]判断PGN文件中是否存在左中括号;
[0039]若存在,则从PGN头部信息中的最后一个右中括号的下一个字符为起点提取字符,直至所有字符提取完毕,得到PGN记号数据;
[0040]若不存在,则确定PGN文件中的所有字符为PGN记号数据。
[0041]在本申请的一个实施例中,当数据文件为PGN文件时,目标数据元素为指定的走棋位置信息;
[0042]基于字典树确定目标数据元素所处的数据链,包括:
[0043]获取目标数据元素对应的树节点的树节点携带信息;
[0044]根据树节点携带信息中的历史字符串信息确定历史子节点轨迹;
[0045]基于字典树确定目标数据元素对应的树节点的所有子节点;
[0046]根据历史子节点轨迹形成数据链,和/或根据目标数据元素对应的树节点的所有子节点形成数据链。
[0047]在本申请的一个实施例中,基于目标数据元素所处的数据链生成分支数据,包括:
[0048]在数据链上创建树节点,得到更新树节点;
[0049]在更新树节点中记录树节点携带信息,并在更新树节点的父节点的子节点数组中添加更新树节点。
[0050]在本申请实施方式的第二方面中,提供了一种数据解析装置,用于执行如第一方面中任一项所述的数据解析方法,包括:
[0051]数据获取模块,用于获取数据文件;数据文件包含相互关联的若干数据元素;
[0052]字典树构建模块,用于基于数据文件构建字典树;
[0053]数据链确定模块,用于基于字典树确定目标数据元素所处的数据链;
[0054]分支数据生成模块,用于基于目标数据元素所处的数据链生成分支数据。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据解析方法,其特征在于,包括:获取数据文件;所述数据文件包含相互关联的若干数据元素;基于所述数据文件构建字典树;基于所述字典树确定目标数据元素所处的数据链;基于所述目标数据元素所处的数据链生成分支数据。2.根据权利要求1所述的数据解析方法,其特征在于,所述数据文件为PGN文件;所述基于所述数据文件构建字典树,包括:对所述PGN文件进行字符解析,得到PGN头部信息以及PGN记号数据;基于所述PGN记号数据确定记号序列;分别基于所述记号序列中的各个记号元素创建各个记号元素对应的树节点;创建空节点作为所述字典树的根节点;基于所述根节点以及各个记号元素对应的树节点构建所述字典树。3.根据权利要求2所述的数据解析方法,其特征在于,所述分别基于所述记号序列中的各个记号元素创建各个记号元素对应的树节点,包括:若当前记号元素为走棋位置信息,则创建当前记号元素对应的树节点,并在当前记号元素对应的树节点中记录树节点携带信息,所述树节点携带信息包括字符信息、子节点数组、父节点以及历史字符串信息;并且在当前记号元素对应的树节点的父节点的子节点数组中添加当前记号元素对应的树节点;若当前记号元素为左圆括号,则不创建当前记号元素对应的树节点,将当前记号元素的上一记号元素推入预设记号栈中,将上一记号元素对应的树节点的父节点作为前记号元素的下一记号元素的父节点;若当前记号元素为右圆括号,则不创建当前记号元素对应的树节点,将所述预设记号栈的栈顶记号元素推出,并将所述栈顶记号元素作为当前记号元素的下一记号元素的父节点。4.根据权利要求2所述的数据解析方法,其特征在于,所述对所述PGN文件进行字符解析,包括:验证所述PGN文件的左中括号以及右中括号的合法性;若所述PGN文件合法,则基于所述左中括号以及所述右中括号在所述PGN文件中提取所述PGN头部信息;以及基于所述左中括号以及所述右中括号在所述PGN文件中提取所述PGN记号数据。5.根据权利要求4所述的数据解析方法,其特征在于,所述验证所述PGN文件的左中括号以及右中括号的合法性,包括:维护左中括号栈、...

【专利技术属性】
技术研发人员:赵哲琦魏敏
申请(专利权)人:网易有道信息技术北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1