我下载了42个PDF,每个PDF的格式都是相似的。每个都有不同的表,其中一个被标记为“校园报告的事件”。该特定表格位于每个PDF中的不同页面上。我想写一个函数,它将搜索包含“校园事件报告”的页面,并抓取该表,以便我可以将其放入数据帧中。
我想我可以使用PDFPlumber搜索字符串"Campus Reported Incidents“并返回页码。然后,我会编写一个使用页码来抓取我想要的表格的函数,并且我会在每个PDF中循环该函数。但是,我一直收到“参数不可迭代”或“类型对象不可订阅”的错误。我查看了PDFPlumber文档,但它并没有解决我的问题。
下面是我尝试过的一个代码示例:
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)发布于 2020-02-15 02:11:36
我看到这篇文章是在一段时间之前的,但也许这篇回复仍然会对你或其他人有所帮助。
这个错误看起来像是来自于你在页面中循环的方式。range对象不是一个列表,这就是您看到"type object is not subscriptable"错误消息的原因。取而代之的是,尝试通过"Enumerate"浏览页面。"i"会让你访问索引(也就是循环中的当前计数)。将使您能够访问"pg"页面中的页面对象。我没有使用下面的"pg"变量,但是如果您愿意的话,您可以使用它来代替"pages[i]"。
下面的代码应该打印每一页中的表,并允许您访问这些表以进一步操作它们。
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}')https://stackoverflow.com/questions/55939921
复制相似问题