如何让tabula-py提取PDF表格时保留数字前导零(如007而非7)?
解决tabula-py提取PDF时保留带前导零数字的方法
强制所有列以字符串类型读取
在调用tabula.read_pdf()时,通过pandas_options指定dtype为str,让pandas直接将所有单元格内容按字符串加载,避免自动转换为数值类型:import tabula # 读取PDF并强制所有列保留字符串格式 df = tabula.read_pdf("target_file.pdf", pages="all", pandas_options={'dtype': str})针对特定列补全前导零
如果只需要修复部分列,可先提取数据,再将目标列转为字符串后用str.zfill()补零(需根据实际位数设置参数):# 假设需修复的列名为"code",固定为6位长度 df['code'] = df['code'].astype(str).str.zfill(6) # 若位数不固定,可结合原始PDF中的格式规则,用自定义逻辑处理使用stream模式解析文本
切换到stream模式(默认是lattice模式),按文本流解析PDF,更易保留原始文本格式,配合字符串类型读取效果更好:df = tabula.read_pdf("target_file.pdf", pages="all", stream=True, pandas_options={'dtype': str})读取原始JSON格式自行处理
若上述方法仍有问题,可读取原始JSON格式的提取结果,直接获取单元格的原始文本内容:raw_data = tabula.read_pdf("target_file.pdf", pages="all", output_format="json") # 遍历raw_data中的表格和单元格,提取原始文本进行后续处理
内容的提问来源于stack exchange,提问作者Ray Ronnaret
相关产品推荐
相关产品推荐

