Использование списка позиций индекса для поиска строк - PullRequest
0 голосов
/ 30 мая 2019

Я ищу абзацы, которые начинаются с определенных терминов в больших неформатированных текстовых файлах из данных, отсканированных в Интернете, с использованием Python.

Я могу получить местоположения и строки, используя приведенный ниже код, но он возвращает каждый экземпляр "value" для каждого экземпляра "value"

    for file_name in file_list: #going through multiple docs
    with open(file_name, 'r') as text:
            search = mmap.mmap(text.fileno(), 0, access=mmap.ACCESS_READ)
            for match in re.finditer(br'(\bvalue)', search, re.IGNORECASE): #looking for the word "value"
                    print(file_name + ',')
                    m = re.finditer(br'(\bvalue)', search, re.IGNORECASE)
                    locs = [(m.start(0),m.end(0)+100) for m in re.finditer(br'(\bvalue)', search, re.IGNORECASE)] #+100 returns additional text after searched word
                    for item in locs:
                            print([(item[0]),(item[1])])
                            print(',')
                            print(search[(item[0]):(item[1])])
                            print('\n')
                    else:
                            print(file_name + ',' + '[null, null]' + ',' + 'false')
                            print('\n')

Когда я пытаюсь использовать другие методы зацикливания, кажется, что ([(item[0]),(item[1])]) вызовет работу. Вместо этого я получаю каждый экземпляр "value", повторенный в каждом экземпляре "value", таким образом, много повторяющихся результатов.

Мой конечный результат:

  1. начальное и конечное местоположение (он же индекс символа) фразы
  2. фрагмент строки на основе чисел в списке
  3. возврат значений NULL + FALSE, если файл не имеет условия поиска

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...