我有一个数据结构转储,我正在尝试将其转换为 XML。该结构内部有许多嵌套结构。所以我有点不知道如何开始,因为我能想到的所有正则表达式都不适用于嵌套表达式。
例如,假设有一个像这样的结构转储:
abc = (
bcd = (efg = 0, ghr = 5, lmn = 10),
ghd = 5,
zde = (dfs = 10, fge =20, dfg = (sdf = 3, ert = 5), juh = 0))
我想得到这样的输出:
< abc >
< bcd >
< efg >0< /efg >
< ghr >5< /ghr >
< lmn >10< /lmn >
< /bcd >
.....
< /abc >
那么什么是一个好的方法呢?标记表达式、聪明的正则表达式还是使用堆栈?
最佳答案
使用pyparsing。
$ cat parsing.py
from pyparsing import nestedExpr
abc = """(
bcd = (efg = 0, ghr = 5, lmn 10),
ghd = 5,
zde = (dfs = 10, fge =20, dfg = (sdf = 3, ert = 5), juh = 0))"""
print nestedExpr().parseString(abc).asList()
$ python parsing.py
[['bcd', '=', ['efg', '=', '0,', 'ghr', '=', '5,', 'lmn', '10'], ',', 'ghd', '=', '5,', 'zde', '=', ['dfs', '=', '10,', 'fge', '=20,', 'dfg', '=', ['sdf', '=', '3,', 'ert', '=', '5'], ',', 'juh', '=', '0']]]
关于Python 正则表达式匹配或标记化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143243/