我正在使用以下类型的Pyparsing表达式。
pp.SkipTo(common_cfg)('value 2') + common_cfg + pp.SkipTo(pp.LineEnd())
common_cfg是一个将“值1”赋给其结果的表达式。
当我解析asDict()时,我得到嵌套的字典。它为什么会发生,我该如何解决它?在“值2”的情况下,我只需要一个空字符串。
{'value 1': '52D4B6ED', 'value 2': ([''], {})}
答案 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'))
解析器中的第一个术语。