python - 在python中使用tabula从PDF中提取完整的表格
问题描述
我有一个PDF,表格格式如下,列名和数据用“--------”分隔
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13
----------------------------------------------------------------------
B ABC1 F1 SSSSSS 1 32WE 161A1 1 A DU23 162.00 85
C ABC2 F2 DDDDDD 1 WE32 161B1 1 B DU20 162.00 86
C ABC3 F3 FFFFFF 1 DF45 161C1 1 C DU20 162.00 87
当前代码:
import tabula
df = tabula.read_pdf("example.pdf", pages='all')
df 是 pdf 中所有表的数据框列表
我能够使用 tabula 提取表格内容,但可能是由于表格格式,它忽略了列名并将表格的第一行显示为列名。如何获取列名?col3 也为空,tabula 完全忽略此列。如何提取包含空列的列名的完整表
我不确定这是否可行,但是如果我从表格中删除“----------”,我相信 tabula 将能够正确读取表格。但是,我不确定如何从pdf中删除“------------”。我正在尝试使用 pypdf2 从 pdf 中提取数据,但无法更改内容。
代码 :
import PyPDF2
from PyPDF2 import PdfFileWriter, PdfFileReader
# creating a pdf file object
pdfFileObj = open('example.pdf', 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# printing number of pages in pdf file
i=0
pageData=''
for i in range(0,pdfReader.getNumPages()):
# creating a page object
pageObj = pdfReader.getPage(i)
# extracting text from page
pageData = pageObj.extractText()
print(pageData)
#Modify PDF here
#remove "-----" from the extracted text
# rewrite modified text back to pdf
i = i+1
# closing the pdf file object
pdfFileObj.close()
解决方案
推荐阅读
- sql - 按值将列拆分为新列 SQL
- php - 检查引导程序最后一列是偶数还是奇数
- javascript - 是否可以看到 React Native 的异步存储电流限制?
- c# - 有没有办法设置查询中 linq 选择中返回的每个元素的排序顺序
- java - 带有 Angular URL 重写的嵌入式 Jetty
- typescript - 打字稿运行时错误:无法读取未定义的属性“长度”
- excel - Excel SUMPRODUCT ISNUMBER 搜索范围并忽略范围内的空空白单元格
- python - 如何将输入限制为一个字母?
- java - java如何防止从外部库输出错误
- domain-driven-design - ABAP DDD 如何通过 RFC 从聚合中正确实现添加/更新/删除子项?