Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在数组列表中搜索字符串(python正则表达式)_Python_Regex_String_List_Pattern Matching - Fatal编程技术网

如何在数组列表中搜索字符串(python正则表达式)

如何在数组列表中搜索字符串(python正则表达式),python,regex,string,list,pattern-matching,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:

我想从下面的列表“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

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

不使用regex的解决方案来解析它

for i in seg:
    if "DP=" in i:
        x, dp = i.split("=")
        print dp     # You can see we captured the 6
dp
将包含您要查找的值。如果您想保留它,可以将其附加到列表中


如果您想继续使用regex,您应该使用(正如另一位评论员所说)
.group(0)
。您可以查看讨论了解更多信息。

mo.group(0)将返回字符串“DP=6”,因此,如果目标是使用DP的值,它是否缺少某些内容。我们可以添加这个函数(在这里[)来检索float(或int,请参阅链接)
DP=mo.group(0)def get_num(x):返回float(''.join(如果ele.isdigit()或ele=='.'))DP=getnum(DP)
这将返回DP值的
6.0
。但它的效率低于@nbryans的回答。啊,对不起。
mo.group(1)
将返回6。无需查找整数:)我只是编辑了答案以反映这一点。捕捉得很好!你好,布莱恩,谢谢你的回答。实际上我尝试了这个方法,它只是给出了一个错误,我还在学习阶段。你能告诉我x在你的代码中的意义吗?嗨,安吉,在
x,dp=I.split(=)行中
,我们将使用
=
作为分隔符拆分字符串
i
(例如,“DP=6”)。这将生成一个列表,即
[“DP”,“6”]
通过使用
x,DP
,我们将获得该列表的第一个条目(“DP”)分配给
x
,列表的其余部分分配给
dp
。由于列表只有两个条目长,
dp
被分配为“6”。您收到的具体错误是什么?