我下载了 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)
Run Code Online (Sandbox Code Playgroud)
小智 12
我看到这篇文章是很久以前的,但也许这个回复仍然会帮助你或其他人。
该错误似乎来自您循环浏览页面的方式。该range对象不是列表,这就是您看到"type object is not subscriptable"错误消息的原因。相反,尝试"Enumerate"浏览页面。这"i"将使您可以访问索引(也就是循环中的当前计数)。的"pg",会给你访问该页面对象的PDF页面。我没有使用"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}')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15488 次 |
| 最近记录: |