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

做个外贸网站万网免费建企业网站

做个外贸网站,万网免费建企业网站,做网站聊城,手机单页网站第一、单个PDF文件命名格式: 提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件 import pdfplumber import re import osdef extract_contract_info(pdf_path):with pdfplumber.open(pdf_path) as pdf:for page in pdf.pages:text page.extract_tex…

第一、单个PDF文件命名格式:

提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件

import pdfplumber
import re
import osdef extract_contract_info(pdf_path):with pdfplumber.open(pdf_path) as pdf:for page in pdf.pages:text = page.extract_text()# 匹配合同编号(只取前12位)contract_match = re.search(r'合同编号[::]\s*([A-Za-z0-9]{12})', text)# 匹配借款人(直到换行或括号,并去除所有空格)borrower_match = re.search(r'借款人[::]\s*([^\n(()]+)', text)if contract_match and borrower_match:contract_number = contract_match.group(1)borrower_name = borrower_match.group(1).replace(" ", "")  # 删除所有空格return contract_number, borrower_namereturn None, Nonedef rename_pdf_file(pdf_path):contract_number, borrower_name = extract_contract_info(pdf_path)if contract_number and borrower_name:dir_name = os.path.dirname(pdf_path)new_filename = f"{contract_number}_{borrower_name}.pdf"new_filepath = os.path.join(dir_name, new_filename)# 避免文件名冲突(自动添加序号)counter = 1while os.path.exists(new_filepath):new_filename = f"{contract_number}_{borrower_name}_{counter}.pdf"new_filepath = os.path.join(dir_name, new_filename)counter += 1os.rename(pdf_path, new_filepath)print(f"文件已重命名为: {new_filename}")else:print("未能提取合同信息,无法重命名")# 使用示例
pdf_path = r'D:\xmfile\案件杂货表\部门\鲍晓文\《个人借款额度合同》XZ_20201224.pdf'
rename_pdf_file(pdf_path)

第二、批量实现PDF文件命名格式:

提取PDF文档中的合同号和姓名并按“合同号_姓名”格式重命名文件

import pdfplumber
import re
import os
from typing import Tuple, Optionaldef validate_pdf(filepath: str) -> bool:"""验证文件是否为有效的PDF"""try:with pdfplumber.open(filepath) as pdf:if len(pdf.pages) == 0:return Falsereturn Trueexcept:return Falsedef clean_borrower_name(name: str) -> str:"""清洗借款人姓名"""# 去除前后空格、特殊字符和标点name = re.sub(r'[^\w\u4e00-\u9fa5]', '', name.strip())# 去除身份证号、电话等可能跟随的信息name = re.sub(r'[\dXx]{15,}', '', name)return namedef extract_contract_info(pdf_path: str) -> Tuple[Optional[str], Optional[str]]:"""提取合同编号和借款人信息"""if not validate_pdf(pdf_path):return None, Nonetry:with pdfplumber.open(pdf_path) as pdf:full_text = "\n".join([page.extract_text() or "" for page in pdf.pages])# 更精确的合同编号匹配(考虑多种格式)contract_match = re.search(r'(合同编号|合同号|编号)[::]?\s*([A-Za-z0-9]{10,15})',full_text,re.IGNORECASE)# 更精确的借款人匹配(考虑多种表述方式)borrower_match = re.search(r'(借款人|借款方|甲方)[::]?\s*([^\n()()]{2,20}?)(?=[\n()()]|身份证|联系方式|$)',full_text,re.IGNORECASE)if contract_match and borrower_match:contract_number = contract_match.group(2)[:12]  # 仍只取前12位raw_borrower_name = borrower_match.group(2)borrower_name = clean_borrower_name(raw_borrower_name)if len(borrower_name) >= 2:  # 姓名至少2个字符return contract_number, borrower_nameexcept Exception as e:print(f"⚠️ 处理 {os.path.basename(pdf_path)} 时发生错误: {str(e)}")return None, Nonedef rename_pdf_file(pdf_path: str) -> None:"""重命名PDF文件"""original_name = os.path.basename(pdf_path)contract_number, borrower_name = extract_contract_info(pdf_path)if contract_number and borrower_name:dir_name = os.path.dirname(pdf_path)base_name = f"{contract_number}_{borrower_name}"extension = ".pdf"# 处理文件名冲突counter = 0while True:new_name = f"{base_name}{f'_{counter}' if counter else ''}{extension}"new_path = os.path.join(dir_name, new_name)if not os.path.exists(new_path):try:os.rename(pdf_path, new_path)print(f"✅ 成功: {original_name} → {new_name}")breakexcept Exception as e:print(f"❌ 重命名失败: {original_name} → {new_name} | 错误: {str(e)}")breakcounter += 1else:print(f"⚠️ 跳过: {original_name} (未提取到有效信息)")def batch_rename_pdfs_in_subfolders(root_dir: str) -> None:"""批量处理子文件夹中的PDF文件"""if not os.path.isdir(root_dir):print(f"❌ 错误: 目录不存在 {root_dir}")returnprocessed_files = 0skipped_files = 0error_files = 0for person_dir in os.listdir(root_dir):person_dir_path = os.path.join(root_dir, person_dir)if not os.path.isdir(person_dir_path):continueprint(f"\n🔍 正在处理: {person_dir}")for filename in os.listdir(person_dir_path):if filename.lower().endswith('.pdf'):pdf_path = os.path.join(person_dir_path, filename)try:rename_pdf_file(pdf_path)processed_files += 1except Exception as e:print(f"❌ 处理 {filename} 时出错: {str(e)}")error_files += 1else:skipped_files += 1print(f"\n📊 处理完成: 共处理 {processed_files} 个文件, 跳过 {skipped_files} 个, 错误 {error_files} 个")if __name__ == "__main__":# 使用示例department_dir = r'D:\xmfile\案件杂货表\部门'# 输入验证while not os.path.exists(department_dir):print(f"目录不存在: {department_dir}")department_dir = input("请输入正确的目录路径: ")batch_rename_pdfs_in_subfolders(department_dir)


文章转载自:

http://tAiF0Fxa.kkqgf.cn
http://zXqvxowN.kkqgf.cn
http://dgtAHkAs.kkqgf.cn
http://5rDMSGyF.kkqgf.cn
http://1Xj8U3MP.kkqgf.cn
http://5eNpZ9fW.kkqgf.cn
http://qGHDR2BB.kkqgf.cn
http://h0GtbXu1.kkqgf.cn
http://eoYPpt4D.kkqgf.cn
http://4UOr0uRS.kkqgf.cn
http://GZ0EWcwy.kkqgf.cn
http://jRwwKAit.kkqgf.cn
http://RDeuUjmc.kkqgf.cn
http://ieeUhH5F.kkqgf.cn
http://nF7Jo6WA.kkqgf.cn
http://9r0CVFmK.kkqgf.cn
http://IqJaE6hm.kkqgf.cn
http://2WR1gOth.kkqgf.cn
http://aBmilxPD.kkqgf.cn
http://jyUfDBp4.kkqgf.cn
http://WUw1iRdF.kkqgf.cn
http://gBpOxmQY.kkqgf.cn
http://n4eFmYaR.kkqgf.cn
http://e5u4mWMu.kkqgf.cn
http://Hff4NNNR.kkqgf.cn
http://TgsK8V52.kkqgf.cn
http://NX5W1a2n.kkqgf.cn
http://mEKmha8o.kkqgf.cn
http://OnR2LVHH.kkqgf.cn
http://CoG3lExF.kkqgf.cn
http://www.dtcms.com/wzjs/747531.html

相关文章:

  • 住建局网站信息化建设如何开启wordpress mu
  • 个人网站的设计旅游网站建设普通论文
  • 网站建设营销型网站建设田达摩托车官方网站
  • 常州有哪些好的网站建设案例成都住建局官网平台
  • 如何选择模板网站建设广州康体设备网站建设
  • 公众号做微网站盐城网站建设培训学校
  • 如何搞好网站建设网站设计原则的第三要素
  • 河北省住房和城乡建设网站怎么注册公司最好
  • 作文网站网址大全开发一个网站一般需要多少钱
  • 出口退税备案在哪个网站做中山seo代理计费
  • 门户网站开发请示网站建设合同违约条款
  • 网站建设三站合一微信小程序军事新闻最新24小时
  • 要搭建网站网页设计资源
  • wordpress网站下载文件长宁深圳网站建设公司
  • 网站推广的阶段目标东莞市手机网站建设哪家好
  • 设计类网站推荐及介绍腾讯企业邮箱登录登录入口
  • 域名网站都有怎么进去建设辽宁省兴城做网站的
  • 咸阳网站制作公司谁做的怀来吧网站
  • 长沙网站制作策划怎么查公司信息
  • 做任务领佣金的网站源码小学网站源码
  • 买服务器做网站资阳seo公司
  • 花钱做的网站推广被骗河北省建设厅报名网站
  • 什么源码做有趣的网站国内广告公司排行
  • 建设银行管方网站wordpress 网页搜索排名
  • 免费推广自己的网站wordpress git wiki
  • 国外网站如何建设wordpress文章相关插件
  • 沈阳军成网站建设wordpress蜜蜂采集
  • 工商注册官方网站网站建设四川
  • php视频网站开发实战网站建设与运营 好考吗
  • 网站制作公司 首推万维科技如何在linux服务器上架设网站