-1

这是上传的 pdf 文件,它会将其转换为文本。转换为文本后,我使用正则表达式从 pdf 中获取一些特定数据。现在有各种各样的 pdf,我必须为每个 pdf 使用不同类型的正则表达式。但我在if条件下区分pdf时遇到问题,如下所示。我在这里所做的只是去第一个 if 条件。如何将 pdf 传递到我想要的位置,我的意思是我创建的特定正则表达式。或者有没有其他方法可以做到这一点,主要是我只是想为一些特定的数据建立 pdf 提取器。

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]+)'
4

1 回答 1

0

要根据它的内容获得目标,您应该使用如下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)并在您的代码中使用它(如果您愿意)。

于 2020-04-18T21:33:59.800 回答