나는 내가 HDF5 형식의 배열을 저장하기 위해 MATLAB의 hdf5write 기능을 활용 these scripts 사용 정규 표현식으로 파이썬 문자열의 16 진수 값을 제거하려면 어떻게해야합니까?
columns = {'MagX', 'MagY', 'MagZ', ...
'AccelerationX', 'AccelerationX', 'AccelerationX', ...
'AngularRateX', 'AngularRateX', 'AngularRateX', ...
'Temperature'}
MATLAB
에서 셀 배열을 가지고있다.나는 python을 사용하여 python으로 hdf5 파일을 읽었습니다. 셀 배열은 빈약 한 문자열 배열로 제공됩니다. 목록으로 변환하면 출력됩니다 :
>>>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']
이 16 진수 값은 어딘가에서 문자열로 튀어 나오고 제거하고 싶습니다. 그들은 항상 목록의 처음 세 항목에 나타나지는 않습니다. 나는 그것들을 다루거나 그들이 왜 그곳에있는 이유를 알아내는 좋은 방법이 필요합니다.
>>>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'
일반 표현식을 사용하여 16 진수 값을 제거했지만 운이별로 없었습니다.
>>>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'
이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까? 다음과 같은 방법으로 모든 비 단어 문자를 제거 할 수 있습니다
감사합니다,이 간단하고 내가 필요하지 않습니다.^문자는 너무 자주 사용하는 것을 잊어 버리는 것입니다. – moorepants