python提取docx文档的信息(文本+表格)
文章目录一、说明:二、提取数据安装模块:1、提取文本内容:2、提取Excel表格内容:一、说明:本文的需求是提取docx文档里面的数据信息,包括文本和Excel表格信息。经过一上午的搜索,目前找到了一些文字,整理成自己需要的的代码。二、提取数据安装模块:我这里直接命令安装即可。pip install python-docx1、提取文本内容:这里只有按原的每行保存为一个大的字符串。具体不废话了,直接
·
一、说明:
本文的需求是提取docx文档里面的数据信息,包括文本和Excel表格信息。
经过一上午的搜索,目前找到了一些文字,整理成自己需要的的代码。
二、提取数据
安装模块:
我这里直接命令安装即可。
pip install python-docx
1、提取文本内容:
这里只有按原的每行保存为一个大的字符串。
具体不废话了,直接上代码:
import docx
def extract_docx_text(docFile):
# 获取文档对象
document = docx.Document(docFile)
# 完整的text:
docx_text = ""
for para in document.paragraphs:
docx_text += para.text + '\n'
return docx_text
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
docx_text = extract_docx_text(docFile)
print("docx_text", docx_text)
效果图:
是根据每行的内容保存,还是原样的行保存一个大的字符串样式,方便后续需求区分开每行内容。
2、提取Excel表格内容:
我这里根据读取所有表格,然后根据每个表格进行弄成json格式,以表格的列名称作为key,值为列表。
1)、每列数据作为一个list
from docx import Document
def extract_table_data(tables_i):
columns = tables_i.columns
tables_i_json = {}
# 列标题
columns_name_json = {} # 用来下面表格的行做铺垫使用
for columns_i in range(len(columns)):
tables_i_json[tables_i.cell(0, columns_i).text] = []
columns_name_json[columns_i] = tables_i.cell(0, columns_i).text
for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
for columns_i in range(len(columns)):
tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
return tables_i_json
def extract_docx_excel_data(docFile):
document = Document(docFile) # 读入文件
# print("document",dir(document))
tables = document.tables # 获取文件中的表格集
# print("dir", dir(document))
# print("tables", tables)
tables_json = []
for tables_i in tables:
tables_i_json = extract_table_data(tables_i)
tables_json.append(tables_i_json)
print("tables_json",tables_json)
return tables_json
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
tables_json = extract_docx_excel_data(docFile)
2)、每行一个json:
from docx import Document
def extract_table_data(tables_i):
columns = tables_i.columns
"""每列作为列表"""
# tables_i_json = {}
# # 列标题
# columns_name_json = {} # 用来下面表格的行做铺垫使用
# for columns_i in range(len(columns)):
# tables_i_json[tables_i.cell(0, columns_i).text] = []
# columns_name_json[columns_i] = tables_i.cell(0, columns_i).text
#
# for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
# for columns_i in range(len(columns)):
# tables_i_json[columns_name_json[columns_i]].append(tables_i.cell(row_i, columns_i).text)
"""每行一个json"""
table_data = []
# # 列标题
head_name = []
for columns_i in range(len(columns)):
head_name.append(tables_i.cell(0, columns_i).text)
for row_i in range(1, len(tables_i.rows)): # 从表格第二行开始循环读取表格数据
row_json = {}
for columns_i in range(len(columns)):
row_json[head_name[columns_i]] = tables_i.cell(row_i, columns_i).text
table_data.append(row_json)
return table_data
def extract_docx_excel_data(docFile):
document = Document(docFile) # 读入文件
# print("document",dir(document))
tables = document.tables # 获取文件中的表格集
# print("dir", dir(document))
# print("tables", tables)
tables_json = []
for tables_i in tables:
tables_i_json = extract_table_data(tables_i)
tables_json.append(tables_i_json)
print("tables_json",tables_json)
return tables_json
if __name__ == '__main__':
docFile = 'W020200731560335069483.docx'
tables_json = extract_docx_excel_data(docFile)
直接上代码,自己更换自己的docFile 文件路径即可解决问题。
参考学习的一些文章:
https://zhuanlan.zhihu.com/p/55963556
https://www.cnblogs.com/klb561/p/9982937.html
https://blog.csdn.net/weixin_40449300/article/details/79143971
https://blog.csdn.net/woshisangsang/article/details/75221723
https://zhuanlan.zhihu.com/p/45997055
更多推荐
已为社区贡献4条内容
所有评论(0)