我有一个数据结构的转储,我正试图将其转换为XML。结构中有许多嵌套结构。所以我对如何开始有点不知所措,因为我能想到的所有正则表达式都不能在嵌套表达式上工作。在
例如,假设有这样一个结构转储:
abc = (
bcd = (efg = 0, ghr = 5, lmn = 10),
ghd = 5,
zde = (dfs = 10, fge =20, dfg = (sdf = 3, ert = 5), juh = 0))
我想得到这样的输出:
^{pr2}$那么,什么是解决这个问题的好方法呢?将表达式标记化,使用一个聪明的正则表达式还是使用堆栈?在
我不认为regexp是最好的方法,但是对于那些好奇的人来说,可以这样做:
基本上,我们反复用xml块替换最下面的括号
(no parens here)
,直到不再有括号为止。为了简单起见,我还将主表达式包含在括号中,如果不是这样,只需在解析之前执行data='(%s)' % data
。在下面是一个使用pyparsing更符合习惯用法的另一个答案。因为它提供了一个详细的语法来说明可以看到什么输入和应该返回什么结果,所以解析的数据并不是“杂乱无章的”,因此
toXML()
不需要那么辛苦地工作,也不需要进行任何真正的清理。在输入和XML输出与我的另一个答案相同。
^{pr2}$parseString()
返回的数据是唯一真正的更改:使用pyparsing。在
相关问题 更多 >
编程相关推荐