我有一个数据列表,我需要从中提取该列表中某些字符串的索引:
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个元素作为字符串传递。
非常欢迎任何建议,谢谢!!
答案 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)