如何返回在另一个字符串中找到的字符串的索引?

时间:2019-03-07 08:52:00

标签: python string indexing

我有一个存储在“ 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”中找到的单词的索引,但是我不知道该怎么做。 我想要一种性能出色(快速)的文件,因为该文件由一系列长文本组成。

2 个答案:

答案 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()语句中不需要ifif re.findall()。函数findall()返回一个列表,该列表可以为空或充满匹配项。