如何在数组列表中搜索字符串(python-regex)

时间:2016-06-15 13:25:52

标签: python regex string list pattern-matching

我想从以下列表' seg'

中检索DP的值
 import re 
 seg = ['AC=2', 'AF=1.00', 'AN=2', 'DB', 'DP=6', 'FS=0.000',
 'MLEAC=2', 'MLEAF=1.00', 'MQ=31.55', 'MQ0=0', 'QD=31.64'] 

 for i in seg:
     name = re.compile(r'DP=(.*)')
     mo = name.search(i)
     if mo:
         print "True",mo
     else:
         print "no"

这给出了如下输出:

no
no
no
no
True <_sre.SRE_Match object at 0x00000000025DDCD8>
no
no
no
no
no
no

找到匹配但是为什么不给我DP值? 请帮助我,我是regex的新手

2 个答案:

答案 0 :(得分:1)

mo是一个对象。要获取DP值,请使用mo.group(1)获取捕获组。这将返回6,您可以使用int解析该内容。

答案 1 :(得分:1)

解决方案不使用正则表达式

for i in seg:
    if "DP=" in i:
        x, dp = i.split("=")
        print dp     # You can see we captured the 6

dp将包含您要查找的值。如果要保留它,可以将其附加到列表中。

如果你想继续使用正则表达式,你应该使用(作为另一个评论者说).group(0)。您可以查看讨论here以获取更多信息。