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

2024-09-28 21:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个二进制文件,其中包含一些文本,其上有一个结构。下面是一些线条的示例:

...    
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

因此,现在我说了以下几点:

...    
('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'),
...

如何将这个orderedict解析为Python对象,以便像在原始结构中一样访问字段?i、 电子邮件:

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

Tags: result结构ordereddictopenfileaslistbinfilearxcoilselectdatasrxspec