python解析文本字符串_从文本字符串解析数据对象结构

我一直在尝试使用pyparsing模块进行一些尝试,以便对一般解析有所了解。

我得到了一个面试问题(已经提交了,所以我认为现在没有任何道德问题)来处理一个类似于下面文本文件的数据结构。在Collection Top_Level_Collection "Junk1"

{

Column Date_time_column 1 {"01-21-2011"}

Collection Pig_Entry "Sammy"

{

Column Animal_locations 35 {"Australia", "England", "U.S."}

Data 4

{

4 0 72033 Teeth 2 {1 "2", 1 "3"};

1 0 36331 Teeth 2 {2 "2", 3 "4"};

2 3 52535 Teeth 2 {6 "4", 9 "3"};

4 0 62838 Teeth 2 {3 "7", 7 "6"};

}

}

}

我可以用regex和counting columns得到一个非常老套的解决方案来提取数据片段并将其组合在一起,但我想扩展我在解析方面的知识,以便更具说服力。

可以看出,基本结构是先是“Main abstract data type”,然后是可选的“concrete data type”,然后是“name”或“number of entries”,同时是无限嵌套的。在

以下是迄今为止我在尝试将其解析为字典时得到的信息:

^{pr2}$

返回:{'Column': (['Date_time_column', '1', (['"01-21-2011"'], {}), 'Collection', 'Pig_Entry', '"Sammy"', (['Column', 'Animal_locations', '35', (['"Australia"', ',', '"England"', ',', '"U.S."'], {}), 'Data', '4', (['4', '0', '72033', 'Teeth', '2', (['1', '"2"', ',', '1', '"3"'], {}), ';', '1', '0', '36331', 'Teeth', '2', (['2', '"2"', ',', '3', '"4"'], {}), ';', '2', '3', '52535', 'Teeth', '2', (['6', '"4"', ',', '9', '"3"'], {}), ';', '4', '0', '62838', 'Teeth', '2', (['3', '"7"', ',', '7', '"6"'], {}), ';'], {})], {})], {}), 'Collection': (['Top_Level_Collection', '"Junk"'], {})}

['Column', 'Collection']

但是,我希望它能返回一些可以很容易地发送到python中的类来创建对象的东西。

我的最佳猜测是将它们放在一个嵌套字典中,键是2或3个对象类型的元组,值是一个字典,每个键值都在它下面。一、 e.类似的东西:{ (Collection, Top_Level_Collection, "Junk1"):

{ (Column, Date_time_column): ["01-21-2011"],

(Collection, Pig_Entry, "Sammy"):

{ (Column, Animal_locations): ["Australia", "England", "U.S."],

(Data): [[ 4 0 72033 {(Teeth):[1 "2", 1 "3"]} ]

[ 1 0 36331 {(Teeth):[2 "2", 3 "4"]} ]

[ 2 3 52535 {(Teeth):[6 "4", 9 "3"]} ]

[ 4 0 62838 {(Teeth):[3 "7", 7 "6"]} ]]

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值