我有一个二进制文件,其中包含一些带有结构的文本。这是一个有一些行的样本:
...
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