不适合使用条带法

2024-05-16 02:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是输入:

供应商:希捷产品: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()什么都不做的原因。基本上我想删除前导和尾随空格。请不要建议使用replace,因为任何匹配组都可以由多个单词组成(例如,产品名称可以是Virtual disk),并且还考虑到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 ',)

Tags: recmdsearchsizeserialrevisionjvmproduct
1条回答
网友
1楼 · 发布于 2024-05-16 02:14:19

在match对象上使用.groups()时,您将得到一个元组,其中包含从regex中捕获的任何组的内容。你知道吗

要仅获取第一个捕获的内容,请改用^{}。你知道吗

相关问题 更多 >