这是输入:
供应商:SEAGATE产品:ST914602SSUN146G修订版:0603序列号:080394ENWQ 大小:146.81GB< 146810536448字节>
我的代码:
iostat_cmd = client.executeCmd('iostat -En '+disk+'|egrep \'Vendor|Size\'')
vendor = re.search(r'Vendor:(.*)Product:',iostat_cmd)
vendor = str(vendor.groups()).strip()
product = re.search(r'Product:(.*)Revision:',iostat_cmd)
product = str(product.groups()).strip()
revision = re.search(r'Revision:(.*)Serial No:',iostat_cmd)
revision = str(revision.groups()).strip()
serial = re.search(r'Serial No:(.*)',iostat_cmd)
serial = str(serial.groups()).strip()
size = re.search(r'Size:(.*)<.*>',iostat_cmd)
size = str(size.groups()).strip()
问题是,它实际上并没有将groups()的结果转换为字符串,这可能就是为什么strip()不做任何事情。基本上我想删除前导和尾随空格。请不要建议使用替换,因为任何匹配组都可以由多个单词组成(例如,产品名称可以是虚拟磁盘),并且还要考虑在iostat命令输出中使用空格/分隔符的事实完全随意,这就是为什么我首先要经历所有麻烦。
以下是发生的事情:
jvm 2 | <type 'org.python.modules.sre.MatchObject'>
jvm 2 | <type 'str'>
jvm 2 | (u' SEAGATE ',)
jvm 2 | (u' ST914602SSUN146G ',)
jvm 2 | (u' 0603 ',)
jvm 2 | (u' 080394EC41 \r',)
jvm 2 | (u' 146.81GB ',)
jvm 2 | (u' SEAGATE ',)(u' ST914602SSUN146G ',)(u' 0603 ',)(u' 080394EC41 \r',)(u' 146.81GB ',)