当前位置: 首页 > news >正文

python3 获取某个文件夹所有的pdf文件表格提取表格并一起合并到excel文件

下面是一个完整的示例,其中包括了merge_tables_to_excel函数的定义,并且假设该函数的功能是从每个PDF文件中提取第一个表格并将其合并到一个Excel文件中:

import os  
from pathlib import Path  
import pandas as pd  
import pdfplumber  def extract_first_table_from_pdf(pdf_path):  try:  with pdfplumber.open(pdf_path) as pdf:  for page in pdf.pages:  tables = page.extract_tables()  if tables:  # tables[0]   pdf中的第一个表格,如果pdf有第二个表格你可以修改为tables[1] 根据你需求来调整return tables[0]   except Exception as e:  print(f"Error reading {pdf_path}: {e}")  return None  def merge_tables_to_excel(pdf_files, excel_path):  all_tables = []  for pdf_path in pdf_files:  first_table = extract_first_table_from_pdf(pdf_path)  if first_table:  df_table = pd.DataFrame(first_table[1:], columns=first_table[0])  all_tables.append(df_table)  if all_tables:  merged_tables_df = pd.concat(all_tables, ignore_index=True)  merged_tables_df.to_excel(excel_path, sheet_name='Merged Tables', index=False)  print(f"Tables have been saved to {excel_path}")  else:  print("No tables found in the PDF files.")  def find_all_pdf_files(directory):  return list(Path(directory).glob("*.pdf"))  if __name__ == "__main__":  # 指定PDF文件夹路径  pdf_folder = Path("refer")  # 获取文件夹中所有的PDF文件  pdf_files = find_all_pdf_files(pdf_folder)  # 打印找到的PDF文件列表  print("Found PDF files:", [str(file) for file in pdf_files])  # 指定要保存的Excel文件路径  excel_path = "merged_tables.xlsx"  # 提取并合并表格数据到Excel文件  merge_tables_to_excel(pdf_files, excel_path)

运行结果如图所示:
在这里插入图片描述
在这里插入图片描述

如果你想要遍历一个文件夹中的所有子文件夹,并获取每个子文件夹中的PDF文件,你可以使用递归函数来实现这个功能。下面是一个修改后的代码示例,它会递归地搜索指定目录及其所有子目录中的PDF文件:

import os  
from pathlib import Path  def find_all_pdf_files(directory):  pdf_files = []  for root, dirs, files in os.walk(directory):  for file in files:  if file.lower().endswith('.pdf'):  pdf_files.append(Path(root) / file)  return pdf_files  if __name__ == "__main__":  # 指定PDF文件夹路径  pdf_folder = Path("refer")  # 获取文件夹中所有的PDF文件,包括子文件夹中的PDF文件  pdf_files = find_all_pdf_files(pdf_folder)  # 打印找到的PDF文件列表  print("Found PDF files:", [str(file) for file in pdf_files])  # 指定要保存的Excel文件路径  excel_path = "merged_tables.xlsx"  # 提取并合并表格数据到Excel文件  merge_tables_to_excel(pdf_files, excel_path)

在这个示例中,find_all_pdf_files 函数使用 os.walk() 来递归遍历目录和子目录。os.walk() 会为每个目录返回一个三元组,包含当前目录的路径、当前目录下的子目录名列表,以及当前目录下的文件名列表。函数遍历每个文件名,检查它是否以 .pdf 结尾(不区分大小写),如果是,则将其添加到 pdf_files 列表中。

请确保你的 merge_tables_to_excel 函数能够处理多个PDF文件中的表格合并到Excel文件的逻辑。如果你需要更具体的帮助来定义这个函数,请提供更多关于你希望如何合并表格的信息。

http://www.lryc.cn/news/300872.html

相关文章:

  • 【AIGC】Stable Diffusion的模型入门
  • 【JavaEE】_HTTP请求首行详情
  • Linux第48步_编译正点原子的出厂Linux内核源码
  • 程序员为什么不喜欢关电脑?
  • 【初始RabbitMQ】了解和安装RabbitMQ
  • Linux第56步_根文件系统第3步_将busybox构建的根文件系统烧录到EMMC
  • Linux进程间通信(三)-----System V消息队列
  • Elasticsearch:混合搜索是 GenAI 应用的未来
  • 态、势、感、知的偏序、全序与无序
  • 【从Python基础到深度学习】 8. VIM两种状态
  • java微服务面试篇
  • OpenAI 生成视频模型 Sora 论文翻译
  • 2.13日学习打卡----初学RocketMQ(四)
  • ZigBee学习——BDB
  • 使用Docker快速部署MySQL
  • 力扣热题100_滑动窗口_3_无重复字符的最长子串
  • RM电控工程讲义
  • 论文阅读:《Deep Learning-Based Human Pose Estimation: A Survey》——Part 1:2D HPE
  • C语言——oj刷题——杨氏矩阵
  • C++ 50道面试题
  • 寒假学习记录14:JS字符串
  • 【数学建模】【2024年】【第40届】【MCM/ICM】【C题 网球运动中的“动量”】【解题思路】
  • 无人驾驶LQR控制算法 c++ 实现
  • Karnaugh map (卡诺图)
  • C# CAD 框选pdf输出
  • 【Linux】 Linux 小项目—— 进度条
  • Sora和Pika,RunwayMl,Stable Video对比!网友:Sora真王者,其他都是弟
  • Go内存优化与垃圾收集
  • 【Spring】Bean 的生命周期
  • 云计算基础-存储基础