我有一个matlab中的单元数组。
我使用这些脚本,利用matlab的hdf5write函数将数组保存为hdf5格式。
然后我使用pytables将hdf5文件读入python。单元格数组以字符串的numpy数组的形式出现。我将其转换为列表,以下是输出结果:
这些十六进制值似乎从某处插入了字符串中,我想要将它们移除。它们并不总是出现在列表的前三个项目中,我需要一个好的方法来处理它们或找出它们为什么会首次出现在那里。
有没有关于如何处理这个问题的建议?
columns = {'MagX', 'MagY', 'MagZ', ...
'AccelerationX', 'AccelerationX', 'AccelerationX', ...
'AngularRateX', 'AngularRateX', 'AngularRateX', ...
'Temperature'}
我使用这些脚本,利用matlab的hdf5write函数将数组保存为hdf5格式。
然后我使用pytables将hdf5文件读入python。单元格数组以字符串的numpy数组的形式出现。我将其转换为列表,以下是输出结果:
>>>columns
['MagX\x00\x00\x00\x08\x01\x008\xe6\x7f',
'MagY\x00\x7f\x00\x00\x00\xee\x0b9\xe6\x7f',
'MagZ\x00\x00\x00\x00\x001',
'AccelerationX',
'AccelerationY',
'AccelerationZ',
'AngularRateX',
'AngularRateY',
'AngularRateZ',
'Temperature']
这些十六进制值似乎从某处插入了字符串中,我想要将它们移除。它们并不总是出现在列表的前三个项目中,我需要一个好的方法来处理它们或找出它们为什么会首次出现在那里。
>>>print columns[0]
Mag8�
>>>columns[0]
'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f'
>>>repr(columns[0])
"'MagX\\x00\\x00\\x00\\x08\\x01\\x008\\xe6\\x7f'"
>>>print repr(columns[0])
'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f'
我尝试使用正则表达式来去除十六进制值,但是效果不佳。
>>>re.sub('(\w*)\\\\x.*', '\1', columns[0])
'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f'
>>>re.sub('(\w*)\\\\x.*', r'\1', columns[0])
'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f'
>>>re.sub(r'(\w*)\\x.*', '\1', columns[0])
'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f'
>>>re.sub('([A-Za-z]*)\x00', r'\1', columns[0])
'MagX\x08\x018\xe6\x7f'
>>>re.sub('(\w*?)', '\1', columns[0])
'\x01M\x01a\x01g\x01X\x01\x00\x01\x00\x01\x00\x01\x08\x01\x01\x01\x00\x018\x01\xe6\x01\x7f\x01'
有没有关于如何处理这个问题的建议?