Я ищу абзацы, которые начинаются с определенных терминов в больших неформатированных текстовых файлах из данных, отсканированных в Интернете, с использованием 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
", таким образом, много повторяющихся результатов.
Мой конечный результат:
- начальное и конечное местоположение (он же индекс символа) фразы
- фрагмент строки на основе чисел в списке
- возврат значений NULL + FALSE, если файл не имеет условия поиска
Спасибо за любую помощь!