Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Wildcard - Fatal编程技术网

使用通配符搜索字符串列表并返回匹配项(&;索引python

使用通配符搜索字符串列表并返回匹配项(&;索引python,python,regex,string,wildcard,Python,Regex,String,Wildcard,给你一张单子 list=['beak','back','bear','kill','keel'] 例如,我想使用通配符执行搜索,以返回与模式k**l匹配的所有单词。我可以通过以下几点轻松解决这一问题: regex=re.compile('k..l') matches=[string for string in list if re.match(regex, string)] 但是,我还想访问匹配位置的索引,并有类似的内容: matches=kill, keel locs=3,4 我想要索引

给你一张单子

list=['beak','back','bear','kill','keel']
例如,我想使用通配符执行搜索,以返回与模式
k**l
匹配的所有单词。我可以通过以下几点轻松解决这一问题:

regex=re.compile('k..l')
matches=[string for string in list if re.match(regex, string)]
但是,我还想访问匹配位置的索引,并有类似的内容:

matches=kill, keel
locs=3,4
我想要索引的原因是,一旦找到匹配项,我希望访问df中的一整行(包含其他变量)


谢谢您的帮助。

如我在评论中所述,您可以将
枚举
邮政编码
结合起来以实现您的目标:

import re

lst=['beak','back','bear','kill','keel']
regex=re.compile('k..l')
locs, matches = zip(*[(idx, string) for idx, string in enumerate(lst) if re.match(regex, string)])
print(matches)
print(locs)

如果您对匹配项和索引的元组没有问题,那么可以使用
[(idx,string)for idx,如果重新匹配(regex,string)]则在枚举(列表)中使用string
。然后您可以使用
zip
来分离数据。太棒了!我只是做了一个编辑(仍然需要同行评审),并更改了输出的顺序,因为它在错误的输出中存储了索引和字符串。不过效果很好,谢谢!