前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python读paper

python读paper

作者头像
生信交流平台
发布2022-09-21 14:00:28
1.3K0
发布2022-09-21 14:00:28
举报
文章被收录于专栏:用户7627119的专栏

前面跟大家简单介绍过Python提取多个pdf首页合并输出,还有Python轻松处理Excel。有位粉丝留言python能不能从文献中提取特定的数字,希望能出一个教程,那么今天我们就来聊一聊如何用python读paper,提取特定的数字。

我们先来捋一捋思路:

  1. 利用python打开pdf文件,提取其中的文本
  2. 将每一行的文字分成单个词语
  3. 利用正则表达式来匹配每一个词语,看是不是数字
  4. 将文本写入到word文档中,如果是数字用黄色高亮
  5. 保存word文档

接下来我们用python代码来实现

代码语言:javascript
复制
#加载pdf,word和正则表达式模块
import PyPDF2
import docx
from docx.enum.text import WD_COLOR_INDEX
import re

#打开要读的pdf文件
pdfFileObj = open('meetingminutes.pdf', 'rb')
#生成pdf对象
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

#获取pdf文件中的文本信息
lines = []
for i in range(pdfReader.numPages):
    pageObj = pdfReader.getPage(i)
    text = pageObj.extractText()
    lines += text.split("\n")

#匹配所有数字的正则表达式
regx = re.compile(r'[-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+)([eE][-+]?[0-9]+)?')
#新建一个word对象,用来保存pdf文件的内容
doc = docx.Document()
#循环处理pdf文件中每一行文本
for line in lines:
    #在word文档中添加段落
    para = doc.add_paragraph('')
    #对pdf文件中每一行文字,分成单词来处理
    words = line.split(" ")
    for word in words:
        #在word文档的每一个段落中再添加run
        run = para.add_run(word+" ")
        #如果单词是数字就用黄色来高亮显示
        mo = regx.findall(word)
        if len(mo) > 0:
            run.font.highlight_color = WD_COLOR_INDEX.YELLOW
#最后保存word文档
doc.save('highlighted_pdf_number.docx')

关于python处理word涉及到的两个概念paragraph和run在《python让繁琐工作自动化》这本书中有详细介绍,大家感兴趣可以下去仔细读一下。

下图展示的试pdf文件中的本分内容

下图展示的是高亮之后的word文档。这里的格式可能和原来pdf文件的格式不太一样,但是内容是一样的。

这个任务中用到的代码均出自于我前面提到《python让繁琐工作自动化》这本书。

参考资料:

  1. Python提取多个pdf首页合并输出
  2. python让繁琐工作自动化
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档