首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pdfplumber查找PDF中的文本,返回页码,然后返回表格

使用pdfplumber查找PDF中的文本,返回页码,然后返回表格
EN

Stack Overflow用户
提问于 2019-05-02 01:10:15
回答 1查看 18K关注 0票数 5

我下载了42个PDF,每个PDF的格式都是相似的。每个都有不同的表,其中一个被标记为“校园报告的事件”。该特定表格位于每个PDF中的不同页面上。我想写一个函数,它将搜索包含“校园事件报告”的页面,并抓取该表,以便我可以将其放入数据帧中。

我想我可以使用PDFPlumber搜索字符串"Campus Reported Incidents“并返回页码。然后,我会编写一个使用页码来抓取我想要的表格的函数,并且我会在每个PDF中循环该函数。但是,我一直收到“参数不可迭代”或“类型对象不可订阅”的错误。我查看了PDFPlumber文档,但它并没有解决我的问题。

下面是我尝试过的一个代码示例:

代码语言:javascript
复制
url = "pdfs/example.pdf"

import pdfplumber

pdf = pdfplumber.open(url)

for page in range[0:len(pdf.pages)]:
    if 'Total number of physical restraints' in pdf.pages[page]:
        print(pdf.page_number)
EN

回答 1

Stack Overflow用户

发布于 2020-02-15 02:11:36

我看到这篇文章是在一段时间之前的,但也许这篇回复仍然会对你或其他人有所帮助。

这个错误看起来像是来自于你在页面中循环的方式。range对象不是一个列表,这就是您看到"type object is not subscriptable"错误消息的原因。取而代之的是,尝试通过"Enumerate"浏览页面。"i"会让你访问索引(也就是循环中的当前计数)。将使您能够访问"pg"页面中的页面对象。我没有使用下面的"pg"变量,但是如果您愿意的话,您可以使用它来代替"pages[i]"

下面的代码应该打印每一页中的表,并允许您访问这些表以进一步操作它们。

代码语言:javascript
复制
import pdfplumber
pdf_file = "pdfs/example.pdf"
tables=[]
with pdfplumber.open(pdf_file) as pdf:
    pages = pdf.pages
    for i,pg in enumerate(pages):
        tbl = pages[i].extract_tables()
        print(f'{i} --- {tbl}')
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55939921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档