Я использую Python 3.7. Я заранее прошу прощения, если мой код немного грязный. Это первая программа / проект, над которым я когда-либо работал, поэтому я очень много учусь по ходу дела.
Я пытаюсь создать программу, которая сканирует и анализирует определенные выражения из PDF-файла. (используя Regex), а затем сравнивает и идентифицирует эти результаты с данными, содержащимися в электронной таблице Excel.
В настоящее время программа успешно извлекает правильную информацию из PDF и выполняет сравнение со столбцом B в Excel, чтобы подтвердить, что данные существуют и верны.
Я хотел бы, чтобы это былораспечатать данные из определенной ячейки в столбце B, рядом с ячейкой в столбце C.
В настоящее время это мой код:
# Open file dialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
# Open DOC and extract text
pdfFile = open(file_path, 'rb')
reader = PyPDF2.PdfFileReader(pdfFile)
pageNum = str(reader.numPages)
print('Your document has ' + pageNum + ' pages' + '\n')
for pN in range(reader.numPages):
decCon = reader.getPage(pN).extractText()
#print(decCon) #to test if extracting worked.
# find the harmonised standards
# EN 000 000-1 V0.0.0, EN000000-1V0.0.0, EN 00000:0000, EN 00000:0000
docRegex = re.compile('''
EN\s\d\d\d\s\d\d\d-\d\sV\d.\d.\d|
EN\s\d\d\d\d\d:\d\d\d\d|
EN\s\d\d\d\d\d-\d:\d\d\d\d
''', re.VERBOSE)
# extract the harmonised standards
extractedHs = docRegex.findall(decCon)
# DEBUG - to ensure it is collecting correct data
print('It contains the following standards: ' + '\n')
pprint.pprint(extractedHs)
print('\n' + '\n')
# setup progress bar
print('Scanning all ETSI standards...')
toolbar_width = 10
sys.stdout.write("-" * toolbar_width)
for i in range(toolbar_width):
time.sleep(0.25)
sys.stdout.write("-")
sys.stdout.flush()
sys.stdout.write('\n' + '\n' + 'Printing results now...' + "\n" + '\n')
# extract from etsi spreadsheet
wb = openpyxl.load_workbook('All About Standards.xlsx')
sheet = wb["ETSI Catalog"]
etsi = []
for col in sheet['B']:
etsi.append(col.value)
#print(etsi) # DEBUG PRINT
extractedEtsi = docRegex.findall(str(etsi))
# comparison code
for item1 in extractedHs:
for item2 in extractedEtsi:
if item1 == item2:
print('Standard found: ' + item2)
Извините, если мое объяснение немного многословно, и я 'постараюсь объяснить дальше или упростить при необходимости.
Заранее спасибо.