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

获取多个PDF文件的内容并保存到excel上


# shuang
# 开发时间:2023/12/9 22:03import pdfplumber
import re
import os
import pandas as pd
import datetimedef re_text(bt, text):# re 搜索正则匹配 包含re.compile包含的文字内容m1 = re.search(bt, text)if m1 is not None:return re_block(m1[0])return Nonedef re_block(text):# 去掉空格、中英文小括号、中文冒号变英文冒号;去掉中文全角空格return text.replace(' ', '').replace(' ', '').replace(')', '').replace(')', '').replace(':', ':')def get_pdf(dir_path):pdf_file = []for root, sub_dirs, file_names in os.walk(dir_path):for name in file_names:if name.endswith('.pdf'):filepath = os.path.join(root, name)pdf_file.append(filepath)return pdf_filedef read(xlsx_path, pdf_root):# 构建excel writer 写入器writer = pd.ExcelWriter(xlsx_path)# 如果字段不通用 则需要单独拎出来判断,这里我全部拎出来做了if判断all_fields = {"序号": [],"服务商": [],"车型": [],"上车日期": [],"上车时间": [],"城市": [],"起点": [],"终点": [],"金额(元)": [],}filenames = get_pdf(pdf_root)for filename in filenames:print(f"正在读取:{filename}")with pdfplumber.open(filename) as pdf:first_page = pdf.pages[0]pdf_text = first_page.extract_text()print(pdf_text)table = first_page.extract_tables()[0]# 纳税人识别号 购买方for (id, t) in enumerate(table):if id > 0:curr1 = t[0].split(' ')curr = []for item in curr1:curr.append(item.replace('\n', ''))# t_ = str(t).replace(" ", "")all_fields["序号"].append(curr[0])all_fields["服务商"].append(curr[1])all_fields["车型"].append(curr[2])all_fields["上车时间"].append(curr[3])all_fields["上车日期"].append(curr[4])all_fields["城市"].append(curr[5])all_fields["起点"].append(curr[6])all_fields["终点"].append(curr[7])if len(curr) > 8:all_fields["金额(元)"].append(curr[8])else:all_fields["金额(元)"].append(curr[7])df = pd.DataFrame(all_fields)df.to_excel(writer)writer._save()returnpdf_root = r"行程单"
now = datetime.datetime.now()
now = str(now).split(' ')[0]
print(now)
xlsx_path = f"行程单{now}.xlsx"read(xlsx_path, pdf_root)

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

相关文章:

  • 深入了解网络流量清洗--使用免费的雷池社区版进行防护
  • 【FFMPEG应用篇】基于FFmpeg的转码应用(FLV MP4)
  • LInux初学之路linux的磁盘分区/远程控制/以及关闭图形界面/查看个人身份
  • Netty 介绍、使用场景及案例
  • 小游戏选型(一):游戏化设计助力直播间互动和营收
  • 社区嵌入式服务设施建设为社区居家养老服务供给增加赋能
  • SpringBoot请求参数加密、响应参数解密
  • Mysql适配国产化数据库人大金仓冲突记录
  • 在微服务架构中认证和授权的那些事儿
  • Git使用统一规范
  • 如何在前端优化中处理大量的图像资源?
  • 【MYSQL】性能相关
  • 【Jmeter之get请求传递的值为JSON体实践】
  • (1)(1.13) SiK无线电高级配置(六)
  • 用JAVA实现樱花飘落
  • Web开发:SQLsugar的安装和使用
  • Redis面试题10
  • arm64架构编译electron长征路
  • 建模软件Rhinoceros mac介绍说明
  • 视频号下载小助手:教你微信视频号怎么提取视频出来
  • C#-委托
  • Mr_HJ / form-generator项目文档学习与记录(续2)
  • React16源码: React中FiberRoot的源码实现
  • Linux第24步_安装windows下的VisualStudioCode软件
  • Spring 注解 和SpringMVC注解
  • iOS rootless无根越狱解决方案
  • 文件管理小技巧:如何高效整理多种格式的图片,图片分类的方法
  • 【c++】入门4
  • 使用Web自动化测试工具显著好处
  • 【性能】【算法】for循环,性能提高