一种将文本解析成键值对的方法和装置制造方法

文档序号:6485756阅读:144来源:国知局
一种将文本解析成键值对的方法和装置制造方法
【专利摘要】本申请提供了一种将文本解析成键值对的方法和装置,其中的方法具体包括:预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式;对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果,所述编译结果包括:与待处理文本的格式相应的源变量和分隔符,以及与目标键值对的格式相应的目标变量;依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值;保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对。本申请能够提高将文本解析成键值对的效率。
【专利说明】一种将文本解析成键值对的方法和装置
【技术领域】
[0001]本申请涉及数据处理【技术领域】,特别是涉及一种将文本解析成键值对的方法和装置。
【背景技术】
[0002]键值(Key-value)对是计算机程序的一种数据存储结构,其通过一个主键(key)可以快速唯一定位到一个键值(value),在需要快速查找和一对一保存数据等场景中得到了广泛应用。
[0003]在实际应用中,经常存在这样的需求:将一段文本中有价值的信息提取出来,并且通过键值对的形式进行存储。例如,待处理文本为“icbcOOl,123456”,其中隐藏了渠道编号(api)和流水号(no)这样的信息,需要将其中的内容提取出来,最终形成如下键值对{ap1:1cbcOOl, no:123456}。
[0004]对待处理文本的格式进行分析,可以得知文本是通过一个既定的符号分隔的字符串,文本中包含不规则的分隔符。故参考已有的字符串操作方法,将文本解析成键值对需要使用获取子串的方式,其中获取子串需要提前知道提取的子串在文本中的起始位置和终止位置;另外,还需要获知“,”等分隔符的位置;在分隔符处截取两个子串,并赋值给相应的变量,即能得到键值对。
[0005]依据上述解析思想,现有将文本解析成键值对的方法主要采用一个字符一个字符处理的方式,具体过程如下:
[0006]首先,针对待处理文本,从第一个字符开始向后查找,判断有没有一个字符是“,”,找到这个符号后获取该符号所在的位置;
[0007]其次,依据获取的“,”的位置,获知“,”前面的子串在整个字符串中的起始位置和终止位置,以及,后面的子串在整个字符串中的起始位置和终止位置;
[0008]再次,通过程序设计语言的提取子串的功能分别提取出这两个子串;
[0009]最后,将两个子串分别赋值给api和no。
[0010]综上,现有将文本解析成键值对的方法需要对文本进行一个字符一个字符的查找以确定文本格式,并且在查找后,需要根据复杂的文本格式确定变量格式,然后在确定变量格式后,需要将这些变量对应的字符串提取出来,然后将其赋值,形成键值对,也即现有将文本解析成键值对的方法需要很多次的全量遍历。然而,在文本格式非常复杂(例如具有多种分隔符),而且文本长度很长(例如子串长度很长)的情况下,多次全量遍历会导致解析效率的大幅下降。
[0011]总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够提高将文本解析成键值对的效率。

【发明内容】

[0012]本申请所要解决的技术问题是提供一种将文本解析成键值对的方法和装置,能够提高将文本解析成键值对的效率。
[0013]为了解决上述问题,本申请公开了一种将文本解析成键值对的方法,包括:
[0014]预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式;
[0015]对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果,所述编译结果包括:与待处理文本的格式相应的源变量和分隔符,以及与目标键值对的格式相应的目标变量;
[0016]依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值;
[0017]保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对。
[0018]优选的,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括:
[0019]读取所述文本解析模板的行文本的内容;
[0020]确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构和保留语法结构;
[0021]从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符;
[0022]从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量。
[0023]优选的,所述依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值的步骤,包括:
[0024]从待处理文本的第一个字符开始,按照所述源变量和分隔符的顺序在待处理文本中进行匹配,得到的匹配结果中,第一个字符到第一个分隔符之间的文本为第一个源变量的值,两个分隔符之间的文本为对应顺序的源变量的值。
[0025]优选的,所述编译结果的数据结构为类对象。
[0026]优选的,所述文本解析模板还用于描述解析的数据校验规则;所述编译结果还包括与所述数据校验规则相应的源变量及相应的校验函数;
[0027]所述方法还包括:
[0028]利用校验函数对所述源变量的值进行校验,若校验通过,则执行所述保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对的步骤,若校验不通过,则丢弃所述待处理文本。
[0029]优选的,所述文本解析模板还用于描述解析的二次数据处理需求;所述编译结果还包括与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,所述二次数据处理函数用于将所述二次数据处理源变量中主键的值赋值给所述
新变量;
[0030]则所述方法还包括:
[0031]依据所述与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,对所述源变量及相应的值进行二次数据处理,得到相应新变量及相应的值;[0032]保留与所述目标变量相同的源变量和新变量及相应的值,作为与所述待处理文本相应的键值对。
[0033]优选的,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括:
[0034]读取所述文本解析模板的行文本的内容;
[0035]确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构、保留语法结构和校验语法结构;
[0036]从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符;
[0037]从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量;
[0038]从符合所述校验语法结构的所述行文本的内容中识别出与所述数据校验规则相应的源变量及相应的校验函数。
[0039]优选的,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括:
[0040]读取所述文本解析模板的行文本的内容;
[0041]确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构、保留语法结构和二次数据处理语法结构;
[0042]从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符;
[0043]从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量;
[0044]从符合所述二次数据处理语法结构的所述行文本的内容中识别出与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数。
[0045]优选的,所述校验函数对应正则表达式。
[0046]另一方面,本申请还公开了一种将文本解析成键值对的装置,包括:
[0047]模板预置模块,用于预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式;
[0048]模板编译模块,用于对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果,所述编译结果包括:与待处理文本的格式相应的源变量和分隔符,以及与目标键值对的格式相应的目标变量;
[0049]文本匹配模块,用于依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值 '及
[0050]变量保留模块,用于保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对。
[0051]优选的,所述文本解析模板包括若干行文本;所述模板编译模块包括:
[0052]读取子模块,用于读取所述文本解析模板的行文本的内容;
[0053]语法结构确定子模块,用于确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构和保留语法结构;[0054]第一识别子模块,用于从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符;
[0055]第二识别子模块,用于从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量。
[0056]优选的,所述文本匹配模块,具体用于从待处理文本的第一个字符开始,按照所述源变量和分隔符的顺序在待处理文本中进行匹配,得到的匹配结果中,第一个字符到第一个分隔符之间的文本为第一个源变量的值,两个分隔符之间的文本为对应顺序的源变量的值。
[0057]优选的,所述编译结果的数据结构为类对象。
[0058]优选的,所述文本解析模板还用于描述解析的数据校验规则;所述编译结果还包括与所述数据校验规则相应的源变量及相应的校验函数;
[0059]所述装置还包括:
[0060]校验模块,用于利用校验函数对所述源变量的值进行校验,若校验通过,则执行所述保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对的步骤,若校验不通过,则丢弃所述待处理文本。
[0061]优选的,所述文本解析模板还用于描述解析的二次数据处理需求;所述编译结果还包括与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,所述二次数据处理函数用于将所述二次数据处理源变量中主键的值赋值给所述
新变量;
[0062]则所述装置还包括:
[0063]二次处理模块,用于依据所述与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,对所述源变量及相应的值进行二次数据处理,得到相应新变量及相应的值;
[0064]第二变量保留模块,用于保留与所述目标变量相同的源变量和新变量及相应的值,作为与所述待处理文本相应的键值对。
[0065]与现有技术相比,本申请具有以下优点:
[0066]本申请采用预置的文本解析模板与待处理文本匹配的方式,从待处理文本中提取有价值的信息以实现文本解析;相对于现有技术中多次全量遍历,本申请中文本解析模板与待处理文本的匹配只需一次全量遍历,故能够有效提高解析效率,尤其在文本格式非常复杂或文本长度很长的情况下,本申请提高解析效率的优势更为显著。
[0067]另外,如果在解析过程中存在文本格式变更、数据二次数据处理、数据校验等不断变更的解析需求,现有技术中需要频繁、大量地修改代码,也即现有技术具有灵活性差的缺点;而本申请通过预先配置的方式将文本解析模板和计算机程序代码(解析过程中文本解析模板与待处理文本的匹配等操作对应的计算机程序代码)分开,在存在不断变更的解析需求时,计算机程序代码无需变动,只需更改文本解析模板即可,故相对于现有技术,本申请能够大大提高将文本解析成键值对的灵活性。
【专利附图】

【附图说明】
[0068]图1是本申请一种将文本解析成键值对的方法实施例1的流程图;[0069]图2是本申请一种将文本解析成键值对的方法实施例2的流程图;
[0070]图3是本申请一种将文本解析成键值对的方法实施例3的流程图;
[0071]图4是本申请一种将文本解析成键值对的装置实施例的结构图。
【具体实施方式】
[0072]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0073]本申请实施例采用文本解析模板描述待处理文本的格式和目标键值对的格式,并采用文本解析模板与待处理文本匹配的方式从中提取有价值的信息以实现文本解析。相对于现有技术中多次全量遍历,本申请中文本解析模板与待处理文本的匹配只需一次全量遍历,故能够有效提高解析效率,尤其在文本格式非常复杂或文本长度很长的情况下,本申请提高解析效率的优势更为显著。
[0074]参照图1,示出了本申请一种将文本解析成键值对的方法实施例1的流程图,具体可以包括:
[0075]步骤101、预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式;
[0076]本申请实施例中,文本解析模板本身也是一种自定义的程序设计语言,这种语言是用来描述待处理文本的格式和目标键值对的格式。
[0077]在本申请的一种应用示例中,所述文本解析模板具体可以包括定义语句和保留输出语句两部分,其中,定义语 句可用于描述待处理文本的格式,保留输出语句可用于描述目标键值对的格式。
[0078]在实际应用中,可由本【技术领域】的程序员根据待处理文本的格式情况及目标键值对的格式情况,预置所述文本解析模板。
[0079]参照表1,示出了本申请一种文本解析模板中定义语句和保留输出语句的示例。
[0080]表I
[0081]
文本解析模板
示倒说明组成部分__:_
#define(@api@,@action@,@state@ 格式为#def1ne()5 ()内用來描述待 | 定义语句...___)丨处理文本的格式,文本通过κ广分I
[0082]
【权利要求】
1.一种将文本解析成键值对的方法,其特征在于,包括: 预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式; 对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果,所述编译结果包括:与待处理文本的格式相应的源变量和分隔符,以及与目标键值对的格式相应的目标变量; 依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值; 保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对。
2.如权利要求1所述的方法,其特征在于,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括: 读取所述文本解析模板的行文本的内容; 确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构和保留语法结构; 从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符; 从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量 。
3.如权利要求1所述的方法,其特征在于,所述依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值的步骤,包括: 从待处理文本的第一个字符开始,按照所述源变量和分隔符的顺序在待处理文本中进行匹配,得到的匹配结果中,第一个字符到第一个分隔符之间的文本为第一个源变量的值,两个分隔符之间的文本为对应顺序的源变量的值。
4.如权利要求1或2或3所述的方法,其特征在于,所述编译结果的数据结构为类对象。
5.如权利要求1或2或3所述的方法,其特征在于,所述文本解析模板还用于描述解析的数据校验规则;所述编译结果还包括与所述数据校验规则相应的源变量及相应的校验函数; 所述方法还包括: 利用校验函数对所述源变量的值进行校验,若校验通过,则执行所述保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对的步骤,若校验不通过,则丢弃所述待处理文本。
6.如权利要求1或2或3所述的方法,其特征在于,所述文本解析模板还用于描述解析的二次数据处理需求;所述编译结果还包括与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,所述二次数据处理函数用于将所述二次数据处理源变量中主键的值赋值给所述新变量; 所述方法还包括: 依据所述与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,对所述源变量及相应的值进行二次数据处理,得到相应新变量及相应的值; 保留与所述目标变量相同的源变量和新变量及相应的值,作为与所述待处理文本相应的键值对。
7.如权利要求5所述的方法,其特征在于,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括: 读取所述文本解析模板的行文本的内容; 确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构、保留语法结构和校验语法结构; 从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符; 从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量; 从符合所述校验语法结构的所述行文本的内容中识别出与所述数据校验规则相应的源变量及相应的校验函数。
8.如权利要求6所述的方法,其特征在于,所述文本解析模板包括若干行文本;所述对所述文本格式的文本解 析模板进行编译,得到计算机程序可识别的编译结果的步骤,包括: 读取所述文本解析模板的行文本的内容; 确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构、保留语法结构和二次数据处理语法结构; 从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符; 从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量; 从符合所述二次数据处理语法结构的所述行文本的内容中识别出与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数。
9.如权利要求5所述的方法,其特征在于,所述校验函数对应正则表达式。
10.一种将文本解析成键值对的装置,其特征在于,包括: 模板预置模块,用于预置文本格式的文本解析模板;所述文本解析模板用于描述待处理文本的格式和目标键值对的格式; 模板编译模块,用于对所述文本格式的文本解析模板进行编译,得到计算机程序可识别的编译结果,所述编译结果包括:与待处理文本的格式相应的源变量和分隔符,以及与目标键值对的格式相应的目标变量; 文本匹配模块,用于依据所述源变量和分隔符在待处理文本中进行匹配,得到所述源变量的值;及 变量保留模块,用于保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对。
11.如权利要求10所述的装置,其特征在于,所述文本解析模板包括若干行文本;所述模板编译模块包括: 读取子模块,用于读取所述文本解析模板的行文本的内容; 语法结构确定子模块,用于确定所述行文本的内容符合的既定语法结构;所述既定语法结构包括定义语法结构和保留语法结构; 第一识别子模块,用于从符合所述定义语法结构的所述行文本的内容中识别出与待处理文本的格式相应的源变量和分隔符; 第二识别子模块,用于从符合所述保留语法结构的所述行文本的内容中识别出与目标键值对的格式相应的目标变量。
12.如权利要求10所述的装置,其特征在于,所述文本匹配模块,具体用于从待处理文本的第一个字符开始,按照所述源变量和分隔符的顺序在待处理文本中进行匹配,得到的匹配结果中,第一个字符到第一个分隔符之间的文本为第一个源变量的值,两个分隔符之间的文本为对应顺序的源变量的值。
13.如权利要求10或11或12所述的装置,其特征在于,所述编译结果的数据结构为类对象。
14.如权利要求10或11或12所述的装置,其特征在于,所述文本解析模板还用于描述解析的数据校验规则;所述编译结果还包括与所述数据校验规则相应的源变量及相应的校验函数; 所述装置还包括:` 校验模块,用于利用校验函数对所述源变量的值进行校验,若校验通过,则执行所述保留与所述目标变量相同的源变量及相应的值,作为与所述待处理文本相应的键值对的步骤,若校验不通过,则丢弃所述待处理文本。
15.如权利要求10或11或12所述的装置,其特征在于,所述文本解析模板还用于描述解析的二次数据处理需求;所述编译结果还包括与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,所述二次数据处理函数用于将所述二次数据处理源变量中主键的值赋值给所述新变量; 所述装置还包括: 二次处理模块,用于依据所述与所述二次数据处理需求相应的二次数据处理源变量及相应的新变量和二次数据处理函数,对所述源变量及相应的值进行二次数据处理,得到相应新变量及相应的值; 第二变量保留模块,用于保留与所述目标变量相同的源变量和新变量及相应的值,作为与所述待处理文本相应的键值对。
【文档编号】G06F17/22GK103455471SQ201210180496
【公开日】2013年12月18日 申请日期:2012年6月1日 优先权日:2012年6月1日
【发明者】王尹 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1