本帖最后由 编程追风梦 于 2022-12-21 15:02 编辑
这里使用camelot提取数据
- import camelot
- tables = camelot.read_pdf(pdf_filepath, pages='1-end')
- for item in tables:
- df = item.df
- # item.to_csv('test.csv')
- # item.to_excel('test.xlsx')
复制代码
- pages使用’1-end’就可以读取pdf文件所有页
- 这里将每个表格数据转换为pandas DataFrame(df)
- 也可以直接导出CSV,Excel文件:to_csv,to_excel
但现实中我们的需求往往更复杂实例需求:多个pdf文件,每个pdf可能有多页,要求提取指定列的所有数据,并去重,最终导出excel文件 - import camelot
- import glob
- import openpyxl
- # 导出excel文件
- def write_excel_xlsx(path, sheet_name, value):
- index = len(value)
- workbook = openpyxl.Workbook()
- sheet = workbook.active
- sheet.title = sheet_name
- for i in range(0, index):
- sheet.cell(row=i+1, column=1, value=str(value[i]))
- workbook.save(path)
- print("xlsx格式表格写入数据成功!")
- directory = './*.pdf'
- files = [filename for filename in glob.glob(directory)]
- result = []
- for pdf_filepath in files:
- print(pdf_filepath)
- tables = camelot.read_pdf(pdf_filepath, pages='1-end')
- for item in tables:
- df = item.df
- try:
- # 这里取第6列数据
- itemData = df[5].to_list()
- result = result + itemData
- print(itemData)
- except Exception:
- print('异常')
- # 过滤空白和标题数据
- result = [x for x in result if x != '' and x != '标题名']
- # 去重
- result = list(set(result))
- write_excel_xlsx('./result.xlsx', 'sheet1', result)
复制代码
- 使用glob遍历文件夹下所有pdf文件,批量处理
- 使用camelot提取表格数据为pandas DataFrame
- 取第6列数据,并过滤掉空白数据和标题数据,同时过滤重复数据
- 使用openpyxl导出第6列数据到excel文件
转载原文:https://codeantenna.com/a/sIZGHFRXvF
https://blog.csdn.net/m0_59236127/article/details/122712637
如果文章帮助到你的话,给我个最佳答案吧,我缺最佳答案 |