![]() |
如何使用正则表达式删除python字符串中的十六进制值?
我在matlab中有一个单元格数组
columns = {'MagX', 'MagY', 'MagZ', ... 'AccelerationX', 'AccelerationX', 'AccelerationX', ... 'AngularRateX', 'AngularRateX', 'AngularRateX', ... 'Temperature'} 我使用[URL="http://www.scipy.org/Cookbook/hdf5_in_Matlab"]这些脚本[/URL] , [URL="http://www.scipy.org/Cookbook/hdf5_in_Matlab"]这些脚本[/URL]利用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' 有关如何处理此问题的任何建议? [B]回答:[/B] 您可以通过以下方式删除所有非单词字符: >>> re.sub(r'[^\w]', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f') 'MagX8' 正则表达式[^\w]将匹配不是字母,数字或下划线的任何字符。通过在re.sub为该正则表达式提供一个空字符串作为替换,您将删除该字符串中的所有其他字符。 由于可能要保留其他字符,因此更好的解决方案可能是指定要保留的更大范围的字符,但不包括控制字符。例如: >>> re.sub(r'[^\x20-\x7e]', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f') 'MagX8' 或者,您可以将[^\x20-\x7e]替换为等效的[^ -~] [^\x20-\x7e] [^ -~] ,这取决于您似乎更清楚。 要排除第一个控制字符之后的所有字符,只需添加.* ,如下所示: >>> re.sub(r'[^ -~].*', '', 'MagX\x00\x00\x00\x08\x01\x008\xe6\x7f') 'MagX' [url=https://stackoverflow.com/questions/5197959]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 04:54。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.