python pdf转Excel

23 篇文章 0 订阅
15 篇文章 0 订阅

源文件为test.pdf
目标文件为pdf.xlsx


import pdfplumber  # 关键在这个库
import pandas as pd


def func(src, dest='pdf.xlsx'):
    pdf = pdfplumber.open(src)
    size = len(pdf.pages)  #pdf有多少页

    with pd.ExcelWriter(dest) as writer:# 多页表格内容写入一个Excel
        count = 0
        j = 0 
        is_start = False
        for i in range(size):
            print('reading page %d' % i)
            page = pdf.pages[i]
            content = page.extract_text()
            # 这段代码是为了匹配表开始的地方
            if not is_start:
            	# 判断表开始的文字
                if content.lstrip().startswith('附表:网下投资者初步配售明细'):
                    is_start = True
                else:
                    continue
            # 提取表格,非表格就跳过
            try:
                table = page.extract_table()
            except:
                continue
            # 表格内容会转化为dataframe
            df = pd.DataFrame(table)
            #避免出现多个dataframe的表头
            if count == 0:
                df.to_excel(writer, header=False, index=False, startrow=count)
            else:
                df[1:].to_excel(writer, header=False, index=False, startrow=count - j)
                j += 1  # 避免出现空行

            count += len(df)
            pass

        writer.save()
        writer.close()
        pass


if __name__ == '__main__':
    func('test.PDF')


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值