2015-12-21 64 views
1

我有存储在一个文件下面的示例数据:如何分析数据结构的这个字符串pyparsing

[ 
    { "keys": ["val1", "val2"], "args": { "arg1": "val1", "arg2": "val2" } }, 
    { "keys": ["val1", "val2", "val3"], "args": { "arg": "val" } }, 
    { "keys": ["val"], "args": {} } 
] 

正如你可能知道,这是一个dictionarieslist。每个字典具有键keys包含列表的任意长度和关键args包含字典

如何可以解析该样本数据回Python对象

with open('file_name') as file: 
    source = file.read() 

data = how_to_parse(source) 

for arr in data: 
    print(arr) 

# Expected result 
# { "keys": ["val1", "val2"], "args": { "arg1": "val1", "arg2": "val2" } } 
# { "keys": ["val1", "val2", "val3"], "args": { "arg": "val" } } 
# { "keys": ["val"], "args": {} } 
+1

'ast.literal_eval' –

+0

Tks @AvinashRaj,这是正确的答案。但是,因为我正在尝试学习'pyparsing'。我想看看使用该库的示例:) – babygau

+0

由于您的数据看起来像是JSON格式,因此您可以查看[json](https://docs.python.org/3/library/json)。 html)模块。 – albert

回答

1

的pyparsing维基包括本实施例中https://pyparsing.wikispaces.com/file/view/parsePythonValue.py/31712649/parsePythonValue.py我在一个实施当时ast.literal_eval尚未提供。使用此代码,你的表情可以用解析:

print listItem.parseString("""[ 
    { "keys": ["val1", "val2"], "args": { "arg1": "val1", "arg2": "val2" } }, 
    { "keys": ["val1", "val2", "val3"], "args": { "arg": "val" } }, 
    { "keys": ["val"], "args": {} } 
]""")[0] 

这给:

[{'keys': ['val1', 'val2'], 'args': {'arg1': 'val1', 'arg2': 'val2'}}, 
{'keys': ['val1', 'val2', 'val3'], 'args': {'arg': 'val'}}, 
{'keys': ['val'], 'args': {}}] 

有在https://pyparsing.wikispaces.com/Examples为你的自我造就更多的例子。

+0

此演示文稿将在http://www.ptmcg.com/geo/python/confs/TxUnconf2008Pyparsing.html中更详细地解释此示例 - 将鼠标悬停在右下角以查看演示文稿导航图标。 – PaulMcG

+0

谢谢你的回答。学习pyparsing对我来说是一个很好的开始 – babygau