Как вернуть индекс строки, найденной в другой строке? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть список слов, которые я сохранил в '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 ]

1 голос
/ 07 марта 2019

Если вам нужен только первый матч, я бы использовал 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() возвращает список, который может быть либо пустым, либо заполненным совпадениями.

1 голос
/ 07 марта 2019

Может использовать:

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]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...