如何在PDF文本中搜索“X COAs”格式子串(X为任意整数)
解决方法:用正则精准匹配整数+COAs格式
你的问题出在只用字符串匹配“ COAs”,会把包含这个子串的整行都拿过来,没法精准提取目标格式。改用正则表达式就能完美解决,它可以精准描述“任意整数 + 空格 + COAs”的规则。
修改后的代码如下:
import pdfminer from pdfminer.high_level import extract_text import re # 导入正则模块 text = extract_text(pdfpath) linebyline = text.splitlines() numCOAs = "ERROR: NO COA NUMBER FOUND" for line in linebyline: # 匹配「一个或多个数字 + 空格 + COAs」的格式 match = re.search(r'\d+ COAs', line) if match: # 提取完整匹配内容,比如"15 COAs" numCOAs = match.group() break print(f"There are {numCOAs}")
关键说明:
re.search(r'\d+ COAs', line):\d+专门匹配1个或多个阿拉伯数字,后面跟空格和COAs,精准锁定你要的格式,不会误匹配其他包含“ COAs”的无关内容。match.group():提取找到的完整匹配字符串,而不是整行内容,满足你精准定位的需求。- 先初始化错误值,找到匹配后再更新,避免循环中不必要的赋值覆盖,逻辑更严谨。
如果需要单独提取整数部分,可以调整正则为r'(\d+) COAs',然后通过match.group(1)拿到数字:
match = re.search(r'(\d+) COAs', line) if match: coa_num = int(match.group(1)) # 转为整数类型 numCOAs = f"{coa_num} COAs"
内容的提问来源于stack exchange,提问作者Kali
相关产品推荐
相关产品推荐

