Pyparsing Parseresults中的嵌套词典

时间:2014-12-05 01:02:27

标签: python pyparsing

我正在使用以下类型的Pyparsing表达式。

pp.SkipTo(common_cfg)('value 2') + common_cfg + pp.SkipTo(pp.LineEnd())

common_cfg是一个将“值1”赋给其结果的表达式。

当我解析asDict()时,我得到嵌套的字典。它为什么会发生,我该如何解决它?在“值2”的情况下,我只需要一个空字符串。

{'value 1': '52D4B6ED', 'value 2': ([''], {})}

1 个答案:

答案 0 :(得分:2)

您在“值2”中看到的值不是嵌套字典。您将获得一个包含单个条目的ParseResults对象,一个空字符串。由于ParseResults具有列表和dicts的特征,因此其repr字符串显示两者,首先是已解析的字符串或对象的列表,然后是任何命名结果及其值的类似dict的列表。打印type(result["value 2"])以查看此内容,或result["value 2"].dump()

使用以下方法“取消组合”SkipTo结果可能会取得一些成功:

pp.ungroup(pp.SkipTo(common_cfg)('value 2'))

解析器中的第一个术语。