Python 如何使用Pyparsing为以下数据创建语法

Python 如何使用Pyparsing为以下数据创建语法,python,parsing,pyparsing,Python,Parsing,Pyparsing,我有类似于YAML的数据,需要使用Pyparsing为其创建语法。与Python一样,Yaml的数据范围由空格定义 数据: 解析上述内容后,它应该输出类似于以下内容的内容: {'comment': 'this object is created first', 'object': 'object_name', 'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'}, 'output':

我有类似于YAML的数据,需要使用Pyparsing为其创建语法。与Python一样,Yaml的数据范围由空格定义

数据:

解析上述内容后,它应该输出类似于以下内容的内容:

{'comment': 'this object is created first',
 'object': 'object_name',
 'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'}, 
 'output': None}, 'methond2_name': {'input': None, 'output': {'arg1': 'arg_type'}}}}
[编辑]
数据与YAML相似,但不完全相同。所以YAML Python解析器无法解析它。我留下了一些细节,以使示例数据更简单

,而不是用于此目的的Pyparsing

import yaml
f = open('yyy.yaml', 'r')
print yaml.load(f)
输出:

{'comment': 'this object is created first',
 'object': 'object_name',
 'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'}, 
 'output': None}, 'methond2_name': {'input': None, 'output': {'arg1': 'arg_type'}}}}

是的,如果没有额外的信息和代码,这是一个太广泛的问题。lepl有一个几乎就是这样的例子——但是pyparsing有一个更大的社区需要支持,所以我不建议改变,除非pyparsing无法处理缩进。对空格敏感的文本是pyparsing的一个弱点。pyparsing wiki上的这个例子()展示了一种方法,但它仍然是一种笨拙的方式。很抱歉,我应该提到数据与YAML相似,但并不完全相同。所以YAML Python解析器无法解析它。为了使示例数据更简单,我留下了一些细节。@cory-好的,但是你必须告诉我们区别是什么,否则就不可能回答这个问题!需要更好的数据>输出示例;)
{'comment': 'this object is created first',
 'object': 'object_name',
 'methods': {'method_name': {'input': {'arg1': 'arg_type', 'arg2': 'arg2_type'}, 
 'output': None}, 'methond2_name': {'input': None, 'output': {'arg1': 'arg_type'}}}}