2015-12-21 62 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