利用docx的私有方法提取表格信息:
最近在开发一个场景的时候遇到了一个复制表格的需求,本来是ceb程序,转化成pdf表格信息难以提取,于是又转成了word,因此试了试python。
提取表格:
提示:话不多说直接上代码
import docx
def find_table(file_name, find_text):
ele = []
doc_obj = docx.Document(file_name)
para = doc_obj.paragraphs
all_tables = doc_obj.tables
find_text = find_text.encode('utf-8')
find_text = find_text.decode('utf-8')
res = []
for ara in para:
if ara.text == find_text:
ele = ara._p.getnext()
while ele.tag[-3:] != 'tbl' and ele.tag != '':
ele = ele.getnext()
if ele.tag != '':
for table in all_tables:
if table._tbl == ele:
for i in range(len(table.rows)):
lin = []
for j in range(len(table.columns)):
lin.append(table.cell(i, j).text)
res.append(lin)
return res
test = find_table(r"E:\desk\test\测试.docx", '测试表1')
print(test)
代码使用:
函数的第一个参数为word的文件名称,例如:r"C\test.docx",第二个参数为查找的表格名称,尽量是表格上部的文字,通过循环段落文字查找目标文字,找到后寻找下一个表格循环表格行列取出表格数据。res 返回结果是一个二维列表,方便使用。