赞
踩
知识图谱在构建过程中有个步骤就是知识抽取,知识抽取里面有好多种数据,什么结构化数据,半结构化数据,非结构化数据…今天学习的是比较简单的从docx的表格里提取数据(我也没怎么学过python,我不生产代码,我只是代码的搬运工)
我用的python3.7
先看一下我需要的内容是什么
我想要抽取出来的是(源,角色/关系,目的地)这个东西组成的三元组。需要把表格中的部分进行一个列的交换。最后导出成csv三元组文件。
from docx import Document # 导入库 import pandas as pd path = '服务包企业.docx' # 文件路径 document = Document(path) # 读入文件 tables = document.tables # 获取文件中的表格集 row_content = [] # 制造一个列表用来存最终结果 start1 = ['企业视图', '阶段', '开发阶段'] row_content.append(start1) # 存放物理视图关系 tb1 = tables[0] # 取docx里第一个表格 for i, row in enumerate(tb1.rows[1:]): # 读每行 除去第一行 row_content1 = [] # 临时列表用来存每一行的内容 for cell in row.cells[:1]: # 读一行中的第一列单元格 c = cell.text # 转化成文本格式 row_content1.append(c) for cell in row.cells[2:4]: # 读一行中的第三列单元格 c = cell.text row_content1.append(c) for cell in row.cells[1:2]: # 读一行中的第二列单元格 c = cell.text row_content1.append(c) row_content.append(row_content1) name = ['实体', '实体', '关系'] # 制定表头 test = pd.DataFrame(columns=name, data=row_content) # 生成csv test.to_csv('E:/enterprise_view.csv', encoding="utf_8_sig") # 导出csv
如果不进行交换的话,直接用这个
from docx import Document # 导入库 import pandas as pd path = '服务包企业.docx' # 文件路径 document = Document(path) # 读入文件 tables = document.tables # 获取文件中的表格集 row_content = [] # 制造一个列表用来存最终结果 start1 = ['企业视图', '阶段', '开发阶段'] row_content.append(start1) # 存放物理视图关系 tb1 = tables[0] # 取docx里第一个表格 for i, row in enumerate(tb1.rows[1:]): # 读每行除去第一行 row_content1 = [] # 临时列表用来存每一行的内容 for cell in row.cells[:1]: # 读一行中的第一列单元格 c = cell.text row_content1.append(c) row_content.append(row_content1) name = ['实体', '实体', '关系'] # 制定表头 test = pd.DataFrame(columns=name, data=row_content) # 生成csv test.to_csv('E:/enterprise_view.csv', encoding="utf_8_sig") # 导出csv
第一次使用docx包可能会出错,说找不到这个包
用pycharm自带的pip安装会出现python2和3不兼容的问题,所以这里推荐自己进行安装。
我用的是pycharm
打开file中的settings,然后点击project,在这个位置有个+号,然后搜索python-docx,点击安装就行。
最后抽取的csv文件如图
参考文献
使用python-docx提取表格信息
使用docx库出现报错找不到模块
使用pycharm导入库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。