簡體   English   中英

如何使用pyparsing解析此數據結構字符串

[英]How to parse this string of data structure with pyparsing

我有以下示例數據存儲在文件中:

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

您可能會意識到,這是dictionaries list 每個字典都有鍵, 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": {} }

pyparsing Wiki包含以下示例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上還有更多示例供您自我完善。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM