python 读取社保年度对账单数据
""" python 读取 社保年度对账单 pdf 数据 """ import pandas as pd import pdfplumber pd.set_option('display.width', None) pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) pd.set_option('display.max_colwidth', None) pd.set_option('display.float_format', '{:,.3f}'.format) def search(PDF_path): total_data = [] data = [] with pdfplumber.open(PDF_path) as pdf: pages_data = [page.extract_text() for page in pdf.pages] # 读取PDF每页的文本,共多少页,pages_data就有几个元素 # 将pages_data内的元素按“\n”拆分放入data列表 for item in pages_data: data += item.split("\n") total_data += data # print(total_data) total_data = total_data[2:-5] columns = ['月缴费工资', '养老月缴费基数', '养老单位缴费', '养老个人缴费', '失业月缴费基数', '失业单位缴费', '失业个人缴费', '工伤月缴费基数', '工伤单位缴费', '医疗(生育)月缴费基数', '医疗(生育)单位缴费', '医疗(生育)个人缴费'] df = pd.DataFrame() target = [item.split(' ') for item in total_data] # print(target) for x in target: df_sub = pd.DataFrame(x).T df = pd.concat([df, df_sub], axis=0) # print(df) # exit() df = df.reset_index(drop=True) # ind = df[~df[0].str.contains('至')].index # 找到 第 0 列 不包含 ‘至’ 的 行的 index # df.drop(ind, inplace=True) # 删除 不包含 某些 索引号 的 行 df.columns = columns return df if __name__ == '__main__': # pdf文件地址 PDF_file = 'J:\规章制度\其他\HTG Locker\wx\社会保险记录\各年度对账单\\2022年年度对账单.pdf' Out_file = 'J:\规章制度\其他\HTG Locker\wx\社会保险记录\各年度对账单\\2022年年度对账单.csv' # PDF_path = os.path.dirname(PDF_file) # PDF_FileName = os.path.abspath(PDF_file).split('\\')[-1] if PDF_file.endswith(".pdf"): df = search(PDF_file) print(df.head(100)) else: print("所提供文件 非 pdf文件!") df.to_csv(Out_file, index=False)
合集:
python
分类:
编程相关 / Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了