如何修改PyPDF2代码实现PDF关键词匹配的单次Pass/Fail输出?
PDF关键词匹配Pass/Fail判定优化
原代码会在PDF每一行未匹配到关键词时打印“Fail”,现在要改成仅当所有页面都找不到关键词时,才打印一次“Fail”,修改后的代码如下:
import PyPDF2 import re # 创建PDF读取对象 pdf_reader = PyPDF2.PdfFileReader("shopping.pdf") num_pages = pdf_reader.getNumPages() print(f"This document has {num_pages} pages") # 初始化匹配标志,默认未找到 match_found = False for i in range(num_pages): page = pdf_reader.getPage(i) text = page.extractText() for line in text.splitlines(): # 注意:re.match是从行首匹配,若要任意位置匹配用re.search if re.match('milk', line): print(f"Pass the keyword is matched on page {i}: {line}") match_found = True # 遍历完所有内容后,判断是否从未匹配到关键词 if not match_found: print("Fail")
关键修改点:
- 新增
match_found变量跟踪匹配状态,初始设为False - 删除原代码中每一行不匹配就打印“Fail”的冗余逻辑,仅在找到匹配时更新标志并输出结果
- 所有页面遍历完成后,根据
match_found的最终状态决定是否打印一次“Fail”
提示:原代码用
re.match('milk', line)是从行首开始匹配关键词,如果需要在文本任意位置匹配,建议替换为re.search(r'milk', line)
内容的提问来源于stack exchange,提问作者fromthedark
相关产品推荐
相关产品推荐

