繁体   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