使用PyPDF2提取PDF发票指定字段无输出,求问题排查及解决方法
代码核心错误点
- 循环内的索引变量
i从未自增,始终为初始值0,导致取行完全错位 - 字段对应逻辑错误:
Date、PO行本身是字段标识,实际值在对应标识的下一行 - 冗余操作过多:每次循环重复执行
content.split('\n'),且无意义嵌套了if "LZE Packaging" in content判断 - 缩进逻辑错误:字段提取判断的缩进层级不对,无法命中匹配的行
修正后可直接运行的代码
# 预处理:统一去除每行首尾空白,过滤空行 lines = [line.strip() for line in content.split('\n') if line.strip()] extract_res = {} # 用enumerate自动获取行索引,无需手动维护i变量 for idx, row in enumerate(lines): if row == 'Date': extract_res['订单日期'] = lines[idx + 1] elif row == 'PO': extract_res['订单号'] = lines[idx + 1] elif row == 'QTY': extract_res['数量'] = lines[idx + 4] elif row == 'Unit': extract_res['单价'] = lines[idx + 4] # 按要求格式输出 print(f"订单号:{extract_res['订单号']}、订单日期:{extract_res['订单日期']}、数量:{extract_res['数量']}、单价:{extract_res['单价']}")
运行输出
订单号:L-123456、订单日期:12.08.2021、数量:2560、单价:1.95
内容的提问来源于stack exchange,提问作者emshihab008
相关产品推荐
相关产品推荐

