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

PyPDF2提取含指定语句PDF页面异常:仅保留最后匹配页求助

问题分析与代码修正

你的代码出现问题的核心原因有三个:

  1. 每次匹配到目标页面时,都重新创建了PdfFileWriter实例,导致之前收集的页面全部丢失
  2. 内部的for n in range(i)循环逻辑错误,它会添加0到i-1的所有页面,而非当前匹配的目标页面
  3. 每次匹配都写入一次输出文件,后续写入会直接覆盖之前的内容,最终只保留最后一次的写入结果

以下是修正后的代码:

from PyPDF2 import PdfFileReader, PdfFileWriter
from pathlib import Path
import re

pdf = PdfFileReader(main_pdf)
target_string = "quick analysis"
# 只初始化一次PDF写入器,用于收集所有匹配页面
pdf_writer = PdfFileWriter()

for page_num in range(pdf.numPages):
    page_obj = pdf.getPage(page_num)
    page_text = page_obj.extractText()
    # 检查页面是否包含目标字符串,如需忽略大小写可添加re.IGNORECASE参数
    if re.search(target_string, page_text, flags=re.IGNORECASE):
        pdf_writer.addPage(page_obj)

# 所有页面遍历完成后,一次性写入结果文件
with Path("Result.pdf").open(mode="wb") as output_file:
    pdf_writer.write(output_file)

关键修改说明

  • 将PdfFileWriter的初始化移到循环外部,确保所有匹配页面都被累积到同一个实例中
  • 移除错误的内部循环,直接添加当前匹配的目标页面
  • 将文件写入操作移到循环结束后,避免多次写入覆盖文件,一次性输出所有符合条件的页面
  • 优化变量命名,提升代码可读性;可选添加re.IGNORECASE实现大小写不敏感匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:10:05