使用通配符搜索字符串列表并返回匹配项及索引 Python

1 投票
1 回答
2637 浏览
提问于 2025-04-18 03:48

给定一个列表

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

正如我在评论中提到的,你可以把 enumeratezip 这两个功能结合起来,来实现你的目标:

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)

撰写回答