我有一个存储在“ dict_words”中的单词列表。 我正在寻找的是文件中单词的存在。
因此,对于每一行,我喜欢下面这样,以获取是否有“ dict_words”一词出现在该行中:
with open(filename, "r") as file:
for line in file:
if any(re.findall(r'|'.join(dict_words), line, re.IGNORECASE)):
#get the index of the word in 'dict_words'
达到此条件(即:True)之后,我想获取在“ dict_words”中找到的单词的索引,但是我不知道该怎么做。 我想要一种性能出色(快速)的文件,因为该文件由一系列长文本组成。
答案 0 :(得分:1)
也许使用:
indexes = [] # where the indexes are stored
with open(filename, "r") as file:
for line in file:
findall = re.findall(r'|'.join(dict_words), line, re.IGNORECASE)
if any(findall):
indexes.append(dict_words.index(findall[0]))
答案 1 :(得分:1)
如果只需要第一个比赛,我会使用search()
而不是findall()
(更快):
import re
s = 'This is a test string'
l = ['test' 'is', 'string']
first_match = re.search(r'|'.join(l), s)
if first_match:
ind = l.index(first_match.group())
print(ind)
# 1
如果使用findall()
,则any()
语句中不需要if
:if re.findall()
。函数findall()
返回一个列表,该列表可以为空或充满匹配项。