Как различить guish загруженных PDF-файлов для извлечения данных с помощью регулярного выражения в python Django - PullRequest
0 голосов
/ 16 апреля 2020

Здесь загружены PDF-файлы, и он преобразует их в текст. После преобразования в текст я использую регулярное выражение, чтобы получить некоторые специфические c данные из PDF-файлов. Сейчас существуют различные типы PDF-файлов, и я должен использовать различные типы регулярных выражений для каждого PDF-файла. но я сталкиваюсь с проблемой различения guish PDF в условиях if, как показано ниже. То, что я сделал здесь, это только первое условие. как я могу передать pdf в его желаемое место, которое я имел в виду в регулярном выражении c, которое я создал. Или есть какие-то другие способы сделать это, в основном, я просто хотел создать pdf-экстрактор для некоторых специфических c данных.

def upload(request):
    if request.method == 'POST':
        form = PoForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            file_name = form.cleaned_data['pdf'].name
            print(form.cleaned_data['pdf'].name)
            text=convert_pdf_to_txt(file_name)


            text=text.replace('\n','')
            print(text)
            path = 'media/pos/pdfs/{}'.format(file_name)
            print(path)
            basename = os.path.basename(path)


            if file_name == basename:

                print(basename)
                print(file_name)
                regex_Quantity ='Quantity:\s?([0-9]+)'
                regex_style_no ='No:\s\s\s\s?([0-9]+)'


            elif file_name == basename:
                print("print2")
                print(basename)
                regex_Quantity = 'Total Units\s?([0-9\,]+)'
                regex_style_no = 'Number:\s?([0-9]+)'


            elif file_name == basename:
                print(basename)
                print("print3")
                regex_Quantity ='PO\s?([0-9\.]+)'
                regex_style_no = 'Article-No.:\s?([0-9]+)'

1 Ответ

0 голосов
/ 19 апреля 2020

Чтобы получить вашу цель, основываясь на части ее контента, вы должны использовать search ссылку следующим образом:

from re import search

content = get_your_pdf_content_or_particular_string()
if search('your_regex', content):
   do_something()
elif search('your_other_regex', content):
   do_something_else()
elif ...

поиск вернет None, если регулярное выражение не было соответствует любой части содержимого, но если это произойдет, он вернет MatchObject, из которого вы можете получить доступ к фактическому регулярному выражению, найденному в содержимом, как MatchObject.group(0) и использовать его в своем коде, если хотите.

...