Python: использование регулярного выражения и l oop для разделения абзацев в PDF - PullRequest
0 голосов
/ 28 мая 2020

У меня есть pdf-файл с 82 абзацами, моя цель - использовать python, чтобы разбить каждый абзац на отдельный блок текста. Я уже извлек текст с помощью PyPDF2.

Все абзацы начинаются с числа и точки (1. 42. 76. et c.). Он работает для большинства абзацев с приведенным ниже кодом, но не всегда учитывает точку. Например, вывод совпадения числа 18: «18 (06 /». Это не должно было быть выбрано, потому что после него нет точки. Есть предложения?

Код для поиска позиций:

i = 1
all_positions = []
found = "found"

while found == "found":
    matches = []
    matches_positions =[]
    standard_length = 0
    substring = str(i) + "."
    matches = re.finditer(substring, text, re.IGNORECASE)
    matches_positions = [match.start() for match in matches]
    standard_length = len(matches_positions)
    if standard_length > 0:
        all_positions.append(matches_positions[0])
        i += 1
    else:
        found = "not found"

Код для вывода на печать:

for i in range(0,len(all_positions)):
     print('---')
     print(text[all_positions[i]:all_positions[i+1]])

1 Ответ

1 голос
/ 28 мая 2020

Вы можете использовать следующее регулярное выражение для достижения результата:

^\d+\. ?(.*)

Объяснение приведенного выше регулярного выражения:

^ - представляет начало данной тестовой строки.

\d+ - соответствует цифрам [0-9] один или несколько раз.

\. - буквально соответствует точке .

? - обозначает ноль или один пробел.

(.*) - представляет группу захвата, жадно захватывающую текст абзаца.

Вы можете найти демонстрацию регулярного выражения здесь.

РЕАЛИЗАЦИЯ В PYTHON:

import re
pattern = re.compile(r"^\d+\. ?(.*)", re.MULTILINE)
match = pattern.findall("1. Hellow World\n"
    "23. This is loremIpsum text\n"
    "9001. Some random textbcjsbcskcbksck sbcksbcksckscsk\n"
    "90 (89. Some other") 
print (match)
# Output - ['Hellow World', 'This is loremIpsum text', 'Some random textbcjsbcskcbksck sbcksbcksckscsk']

Вы можете найти реализацию приведенного выше кода здесь.

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