如何在for循环中使用re.compile来提取子字符串索引

时间:2017-07-24 15:59:51

标签: python-3.x

我有一个数据列表,我需要从中提取该列表中某些字符串的索引:

str=['cat','monkey']

list=['a cat','a dog','a cow','a lot of monkeys']

我一直在使用re.compile来匹配(甚至部分匹配)str列表中的各个元素到列表中:

regex=re.compile(".*(monkey).*")
b=[m.group(0) for l in list for m in [regex.search(l)] if m]
>>> list.index(b[0])
3

然而,当我尝试遍历str列表以找到这些元素的索引时,我获得了空列表:

>>> for i in str:
...     regex=re.compile(".*(i).*")
...     b=[m.group(0) for l in list for m in [regex.search(l)] if m]
...     print(b)
... 
[]
[]

我想问题是regex=re.compile(".*(i).*"),但我不知道如何将第i个元素作为字符串传递。

非常欢迎任何建议,谢谢!!

1 个答案:

答案 0 :(得分:0)

看起来您需要使用字符串格式。

for i in str:
    match_pattern = ".*({}).*".format(i)
    regex = re.compile(match_pattern)
    b = [m.group(0) for l in list for m in [regex.search(l)] if m]
    print(b)