将结构从字符串解析为Python对象

时间:2016-10-25 00:06:23

标签: python python-3.x parsing

我有一个二进制文件,其中包含一些带有结构的文本。这是一个有一些行的样本:

...    
sCoilSelectMeas.aRxCoilSelectData[0].asList[0].lElementSelected  =  1
sCoilSelectMeas.aRxCoilSelectData[0].asList[0].lMuxChannelConnected  =  8
sRXSPEC.lGain    =  1
sRXSPEC.asNucleusInfo[0].tNucleus    =  ""1H""
sRXSPEC.asNucleusInfo[0].lCoilSelectIndex    =  0
...

我使用以下函数将此结构解析为Python OrderedDict作为中间步骤:

from collections import OrderedDict
def parse_x(binfile):
    result = OrderedDict()
    with open(binfile, 'rb') as openfile:
        rx = re.compile(b'(.*)\t = \t(.*)\n')
        for line in openfile:
            m = rx.match(line)
            if m:
                result[m.group(1).decode('utf-8')] = m.group(2).decode('utf-8')
    return result

所以现在我已经用OrderedDict说了以下内容:

...    
('sCoilSelectMeas.aRxCoilSelectData[0].asList[0].lElementSelected', '1'),
('sCoilSelectMeas.aRxCoilSelectData[0].asList[0].lMuxChannelConnected', '8'),
('sRXSPEC.lGain', '1'),
('sRXSPEC.asNucleusInfo[0].tNucleus', '""1H""'),
('sRXSPEC.asNucleusInfo[0].lCoilSelectIndex', '0'),
...

我如何将这个OrderedDict解析为Python对象,以便我可以像在原始结构中那样访问字段?即:

In[1]: sCoilSelectMeas.aRxCoilSelectData[0].asList[0].lElementSelected 
Out[1]: 1

0 个答案:

没有答案