You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则提取PDF中的App编号与名称并写入Excel?

PDF内容提取与Excel写入问题修正建议

问题背景

需要从PDF中提取两类信息并写入CSV(可直接用Excel打开):

  • #后的5位数字作为App编号(如88876)
  • - 后第一个逗号前的内容作为App名称(如Sample1)

样本PDF内容:

#88876 - Sample1, GTRHEUSKYTH, -99WED,-0098B
#99945 - SAMPLE2, DJWHVDFWHEF, -8876D,-3445G

原代码存在的核心问题:

  • 无意义的外层循环range(1,100)会重复处理同一个PDF99次
  • 正则匹配精度不足,且未将编号与名称一一对应
  • CSV写入逻辑错误,仅输出编号且格式不符合要求

修正后的代码

import PyPDF2
import re
import csv

# 定义PDF路径
pdf_path = r"C:\Users\merge.pdf"

# 读取PDF并提取数据
with open(pdf_path, 'rb') as pdf_obj:
    pdf_reader = PyPDF2.PdfFileReader(pdf_obj)
    total_pages = pdf_reader.getNumPages()
    
    # 初始化数据容器,先写入表头
    app_records = [["App_number", "App_name"]]
    
    for page_idx in range(total_pages):
        page_content = pdf_reader.getPage(page_idx).extractText()
        # 用正则一次性匹配整行,确保编号与名称一一对应
        match_pattern = r'#(\d{5}) - ([^,]+),'
        matched_data = re.findall(match_pattern, page_content)
        app_records.extend(matched_data)

# 将数据写入CSV
with open("out.csv", "w", newline="", encoding="utf-8") as csv_file:
    csv_writer = csv.writer(csv_file)
    csv_writer.writerows(app_records)

关键优化说明

  • 移除无效循环,用with语句自动管理文件句柄,避免资源泄漏
  • 改用整行匹配正则r'#(\d{5}) - ([^,]+),',精准捕获5位编号和逗号前的名称,保证两组数据严格对应
  • 添加CSV表头,确保Excel打开时列名清晰
  • 使用utf-8编码写入,避免中文名称乱码问题
  • 先收集所有页面数据再一次性写入,提升处理效率

内容的提问来源于stack exchange,提问作者George

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:15:28