Выражение Regex для извлечения заголовка из PDF в Python - PullRequest
0 голосов
/ 12 декабря 2018

Я читаю PDF, используя textract.Внутри PDF есть несколько заголовков.Вот некоторые примеры:

  • 5 \ n \ n A
  • 5.1 \ n \ n AB
  • 5.1.1 \ n \ n AB
  • 5.1.1 \ n \ n A / B ()

В общем:

(цифровая цифра), затем: (два раза \ n), затем: (словасодержащий буквенно-цифровую цифру случайное число раз) и, наконец, разрыв строки

Обратите внимание, что я точно публикую строку, когда получаю вывод после чтения с использованием textract.Moreover, следовательно, это названия,после разрыва строки начинается абзац.В настоящее время я просто хочу извлечь заголовки из PDF.

Исходный текст (например, цель:):

1 Человек

Человек - это человек ...

1.1 Люди из Азии / Европы

............

1.1.1 Человек из Азии / Европы

.........

Вывод:

1 Человек

1.1 Люди из Азии / Европы

1.1.1 Человек из Азии /Европа

Любая помощь / предложение приветствуется.И было бы действительно замечательно, если бы было дано объяснение для выражения регулярного выражения.

1 Ответ

0 голосов
/ 12 декабря 2018

Вот пример, который будет работать:

(\d.?\ ?)*\n\n[A-Za-z0-9 \/]+\n

Попробуйте здесь .

Пример использования Python 3:

import re

regex = r"(\d.?\ ?)*\n\n[A-Za-z0-9 \/]+\n"

test_str = ("1 \n\n"
    "Human being\n\n"
    "Human being are ....\n\n"
    "1.1 \n\n"
    "People from Asia/Europe\n\n"
    "............\n\n"
    "1.1.1 \n\n"
    "Man from Asia/Europe\n\n"
    ".........")

matches = re.finditer(regex, test_str, re.MULTILINE)

for matchNum, match in enumerate(matches):
    matchNum = matchNum + 1
    print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1
        print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...