无法使用条带方法

时间:2014-05-29 18:28:42

标签: python regex string

这是输入:

供应商: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 ',)

1 个答案:

答案 0 :(得分:2)

当您在匹配对象上使用.groups()时,您将获得一个元组,其中包含来自正则表达式的任何捕获组的内容。

要获取第一次捕获的内容,请改为使用.group(1)