我有一个列表,其中包含我希望在另一个列表中查找的单词:
listex = ['cat', 'mouse', 'dog']
另一个列表是我希望使用上面列表中的相应单词搜索的:
listsearch = ['Hi there is a rabbit', 'how many dogs?', 'hot weather']
我的想法是在' listex'中为每个单词使用正则表达式。在' listsearch'中的每个字符串上。我的目标是在' listsearch'中获取字符串的索引。已匹配。现在,我尝试了以下内容:
for search in listsearch:
x = search
if re.search(r"(?=("+'|'.join(listex)+r"))",x) is not None:
a = re.search(r"(?=("+'|'.join(listex)+r"))",x)
a=a.group(1)
print(a)
dog
所以我现在的代码给我的是输出" dog"。但我希望得到的是" listsearch"中匹配的索引。 - 即在上面的例子中,我希望获得索引1,因为这是" listsearch"中的索引。包含单词" dog"
关于如何在案件中获取索引的任何想法?
答案 0 :(得分:1)
您可以使代码更简单:
results = [re.search('|'.join(listex),l) for l in listsearch]
#[None, <_sre.SRE_Match object; span=(9, 12), match='dog'>, None]
indexes = [i for i,v in enumerate(results) if v]
#[1]
答案 1 :(得分:0)
对于一个基本问题,“列表理解”是否真的应该参与答案?我的意思是,我认为有人可能想告诉他这里没有必要使用正则表达式,但是如果我们想要使用它,也许更基本的东西就足够了。
import re
listex = ['cat', 'mouse', 'dog']
listsearch = ['Hi there is a rabbit', 'how many dogs?', 'hot weather']
for i in range(len(listex)):
for ii in range(len(listsearch)):
if re.findall(listex[i], listsearch[ii]):
print(str(ii)+': '+listex[i])
输出:
1: dog
说明: