如何在python Django中区分上传的PDF以通过正则表达式提取数据



这里是上传的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:ssss?([0-9]+)'

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

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

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

最新更新