使用通配符搜索字符串列表并返回匹配项及索引 Python
给定一个列表
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)中。
谢谢你的帮助。
1 个回答
3
正如我在评论中提到的,你可以把 enumerate
和 zip
这两个功能结合起来,来实现你的目标:
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)