公众号后台回复“图书“,了解更多号主新书内容

作者:J哥

来源:菜J学Python

项目背景

  1. 网上PDF转换工具眼花缭乱,选择困难症,有些甚至还收费;

  2. 直接以其他格式打开PDF效果一般较差;

  3. 有些小可爱通过复制粘贴的方式进行操作,浪费了大量的时间。

那么,有没有什么办法可以秒速解决这些问题呢?没错,Python可以。废话不多说,直接上实操。

项目实操

PDF转Text

首先,安装一下操作PDF的库pdfplumber。pdfplumber 可以很好的读取 PDF 文件内容和提取 PDF 中的表格,这个库不属于 Python 标准库,需要单独安装。

pip3 install pdfplumber

安装好了之后,咱导入pdfplumber。

import pdfplumber

打开PDF论文,并提取论文第2页面内容。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:page = p.pages[2]textdata = page.extract_text()

打印一下textdata,提取到了第2页的内容如下:

重庆大学硕士学位论文 中文摘要
摘 要
风险管理始终是金融业发展过程中永恒主题。信托行业属于高风险行业,我国信托
行业进入快速发展时期,日趋增多的金融创新业务及金融混业经营的趋势,对信托公司
在风险管理方面提出了更高的要求。随着信托业务对社会经济的不断渗透,横跨货币市
场、资本市场和产业市场的信托行业在我国宏观经济中的地位愈加明显。在信托行业中,
作为重点业务类型的房地产信托在整个信托行业的发展过程中作用不容小觑,因此探讨
信托公司房地产行业风险管理研究具有必要的理论价值和现实意义。

此时,你也许疑问了,一篇硕士论文至少也50多页吧。没错,我下载的这篇论文有75页,咱还得加个for循环,把所有页面内容提取下来。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:for i in range(75):page = p.pages[i]textdata = page.extract_text()#print(textdata)

内容都提取出来了,接下来就是保存为text文本。"a"为指定写入模式为追加写入。完整代码如下:

#PDF转Text1import pdfplumber
2with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
3    for i in range(75):
4        page = p.pages[i]
5        textdata = page.extract_text()
6        #print(textdata)
7        data = open("text.text", "a")
8        data.write(textdata)

PDF转Word

需要安装一下操作Word的库python-docx。

pip3 install python-docx

导入Document方法。

from docx import Document

打开PDF论文,并提取论文第2页面内容。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:page = p.pages[2]textdata = page.extract_text()#print(textdata)

新建Word文档,并将提取的内容存储到里面。

document = Document()  #新建一个空白的word文档
content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
document.save("word.docx")  #保存文档docx,命名为word

完整代码如下:

#PDF转Word1import pdfplumber
2from docx import Document
3with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:
4        page = p.pages[2]
5        textdata = page.extract_text()
6        #print(textdata)
7        document = Document()  #新建一个空白的word文档
8        content = document.add_paragraph(textdata)  #在文档中添加正文段落,将变量textdata导进去
9        document.save("word.docx")  #保存文档docx,命名为word

如果要提取全部,加循环。

PDF转Excel

这里所说的PDF转Excel不是全文转Excel,而是对论文中的部分表格进行格式转换,方便在Excel中对数据进行筛选、计算等操作。

本案例PDF论文中第69-75页为附录部分,贴的是财务报表数据,截取部分内容,长这样:

首先,安装并导入操作Excel表格的库openpyxl。

pip3 install openpyxlfrom openpyxl import Workbook

打开PDF论文,提取论文第69-75页表格内容,注意这里range左开右闭。

with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:for i in range(68,75):  #遍历69页-75页page = p.pages[i]table = page.extract_table()#print(table)

新建空白的Excel文件,按行写入从PDF提取的表格数据内容。完整代码如下:

 #PDF转Excel 1import pdfplumber2from openpyxl import Workbook3with pdfplumber.open("兴业B信托项目风险管理研究.pdf") as p:4    workbook = Workbook()  #新建空白Excel工作簿5    sheet = workbook.active  #激活sheet6    for i in range(68,75):  #遍历69页-75页7        page = p.pages[i]8        table = page.extract_table() #提取表格数据9        #print(table)
10        for row in table:  #遍历所有行
11            #print(row)
12            sheet.append(row) #按行追加写入数据
13        workbook.save("Excel.xlsx") #保存文件,命名为Excel
14        i += 1
15        print("第%d页PDF提取完成"%i) #提示提取进度

最终效果如下,好像还可以。

结 语

到这呢,Python对PDF论文的简单操作就基本结束了。但还有一些值得探讨的问题,比如如果有100个PDF且页数都不一样怎么办?即使全部提取下来,文件的格式问题如果优化?提取的多个Excel表格如何合并到一个sheet?首先肯定的告诉你,python都能解决,我以后也还会写相关的Python操作。

最后,祝所有即将毕业或以后要毕业的朋友们降重顺利,毕业快乐!

参考链接:

pdfplumber :https://github.com/jsvine/pdfplumber;

python-docx: https://python-docx.readthedocs.io/en/latest/;

openpyxl:https://openpyxl.readthedocs.io/en/stable/;

◆ ◆ ◆  ◆ ◆

麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行双12活动,大家可以用相原价5折的价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

● 卧槽!原来爬取B站弹幕这么简单

● 厉害了!麟哥新书登顶京东销量排行榜!

● 笑死人不偿命的知乎沙雕问题排行榜

● 用Python扒出B站那些“惊为天人”的阿婆主!

● 你相信逛B站也能学编程吗

Python轻松实现PDF格式转换(附详细源码)相关推荐

  1. 实战|Python轻松实现动态网页爬虫(附详细源码)

    用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识. 项目背景 事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码) ...

  2. beautifulsoup解析动态页面div未展开_实战|Python轻松实现动态网页爬虫(附详细源码)...

    用浅显易懂的语言分享爬虫.数据分析及可视化等干货,希望人人都能学到新知识.项目背景事情是这样的,前几天我公众号写了篇爬虫入门的实战文章,叫做<实战|手把手教你用Python爬虫(附详细源码)&g ...

  3. 实战|Python轻松实现绘制词云图(附详细源码)

    项目背景虽然现在已经有很多现成的制作词云图的工具了,但一般存在以下几个问题:问题一:工具太多,眼花缭乱,质量参差不齐,选择困难症: 问题二:大多词云工具或多或少有一些限制,自定义的空间有限:问题三:有 ...

  4. Python轻松实现动态网页爬虫(附详细源码)!

    AJAX动态加载网页 一 什么是动态网页 J哥一向注重理论与实践相结合,知其然也要知其所以然,才能以不变应万变. 所谓的动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成 ...

  5. python实现监控电脑打开网页_Python轻松实现动态网页爬虫(附详细源码)

    AJAX动态加载网页 一 什么是动态网页 J哥一向注重理论与实践相结合,知其然也要知其所以然,才能以不变应万变. 所谓的动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成 ...

  6. Python编程:实现词云生成(附详细源码)

    Python编程:实现词云生成(附详细源码) 词云是一种数据可视化的方式,它可以用来展示某个主题下的主要关键词汇.在Python中,我们可以使用 wordcloud 库来实现词云的生成.本文将带您一步 ...

  7. 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...

    一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...

  8. JUC.Condition学习笔记[附详细源码解析]

    JUC.Condition学习笔记[附详细源码解析] 目录 Condition的概念 大体实现流程 I.初始化状态 II.await()操作 III.signal()操作 3个主要方法 Conditi ...

  9. Python实现恩尼格玛加密算法——附完整源码

    Python实现恩尼格玛加密算法--附完整源码 恩尼格玛是第二次世界大战中德国所使用的复杂电机械式密码机.它被认为是世界上最复杂的加密设备之一.在这个项目中,我们将使用Python模拟实现恩尼格玛加密 ...

最新文章

  1. PowerShell 学习笔记——运行命令
  2. Nginx和uWSGI和Flask的关系
  3. python后端需要什么基础_python做后端好吗
  4. 200728学习日报二维数组和字符数组
  5. as3是js和java_AS3与JS进行交互(一)
  6. 无心剑中译迪米特利·马丁《我是谁》
  7. java 命令 native2ascii_java native2ascii.exe命令
  8. 三段诡异的JavaScript代码,结果出乎意料
  9. mybatis map里面传对象_关于 MyBatis,我死磕了 10 种超好用的写法
  10. IDA for Linux/Mac/Windows
  11. c语言学号信息管理系统,c语言学籍信息管理系统设计
  12. linux下命令打开url,在linux命令下访问url
  13. python学习笔记项目_python第三方库之Django学习笔记一
  14. 如何centos7中查看IP地址
  15. ip addr命令解析
  16. 学习c语言的方法类比,类比法在C语言程序设计教学中运用.doc
  17. VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结
  18. ie不显示html图片不显示,IE浏览器图片显示不出来 IE浏览器图片不显示解决办法...
  19. IEEE802.1 802.11协议标准
  20. Jar包安装成系统服务-开机自启动

热门文章

  1. 深圳Java培训机构排名榜单:动力节点上榜,第一名耳熟能详
  2. 华硕服务器安装系统安装教程,Asus华硕笔记本重装系统教程
  3. 支付宝app支付提示 系统繁忙,请稍后重试
  4. 我们为什么需要 DAO 操作系统?
  5. 自定义 UINavigationController
  6. e.pageX、e.clientX、e.screenX、e.offsetX的区别以及元素的一些CSS属性
  7. 如何伪装成一个服务端开发(五)
  8. Android studio db文件导出 DDMS
  9. apiCloud初探
  10. 用sympy库解常微分方程