import camelot
pdffile = 'example.pdf'
# параметры которые можно подкрутить
camelotArgs = {
'flavor': 'lattice',
'process_background': False,
'line_tol': 3,
'joint_tol': 3,
'line_scale': 100,
'split_text': True
}
tables = camelot.read_pdf(pdffile, **camelotArgs)
for table in tables:
print(table.df)
# сбросить в эксель
tables[0].df.to_excel('1111.xlsx')
# символ, unicode
print(tables[0].df.iloc[0][0], ' ', tables[0].df.iloc[0][0].encode("unicode_escape"))
import camelot
import pandas as pd
url = 'http://www.fa.ru/org/spo/kip/Documents/raspisanie/%d0%90%d1%83%d0%94%d0%98%d0%a2%d0%9e%d0%a0%d0%98%d0%98.pdf'
tables = camelot.read_pdf(url, pages='all')
for table in tables:
print(table.df)
whole_table = pd.concat([tables[0].df, tables[1].df])
# заменить заголовки на 1-ю строку
new_header = whole_table.iloc[0] # взять первую строку для заголовка
whole_table = whole_table[1:] # взять данные за вычетом строки с заголовком
whole_table.columns = new_header # установить строку заголовка как заголовок датафрейма
# заменить индексы на первый столбец
whole_table = whole_table.set_index('Преподаватели')
# отфильтровать по 3ИСИП-521
result = whole_table[whole_table.eq('3ИСИП-521').any(1)]
# затереть не 3ИСИП-521
result = result.mask(result.ne('3ИСИП-521'), '')
# сбросить например в html
html = result.to_html()
with open('ResultTable.html', 'w') as html_file:
html_file.write(html)
import camelot
url = 'http://www.fa.ru/org/spo/kip/Documents/raspisanie/%d0%90%d1%83%d0%94%d0%98%d0%a2%d0%9e%d0%a0%d0%98%d0%98.pdf'
tables = camelot.read_pdf(url, pages='all')
for table in tables:
print(table.df)