python docx提取word中的目录及文本框中的文本 您所在的位置:网站首页 word文档如何根据目录查找内容 python docx提取word中的目录及文本框中的文本

python docx提取word中的目录及文本框中的文本

2024-03-14 00:25| 来源: 网络整理| 查看: 265

问题描述

同标题

解决方案

因未在docx库找到直接识别word中目录及文本框中文本的方法,所以采用了一个“笨”方法,docx库可以把word文档解析成xml格式,以解析xml的方式查找目录及文本框中文本,具体做法: 迭代出文档的所有element,其中目录的tag为“std”,找到它后提出他的所有文本即为目录文本;文本框的tag 为“textbox”,找到它后还要继续下钻寻找tag为 'r’的element,提取其文本则为文本框中文本。

# 提取word目录 file = docx.Document(file_path) children = file.element.body.iter() child_iters = [] for child in children: # 通过类型判断目录 if child.tag.endswith('main}sdt'): for ci in child.iter(): if ci.text and ci.text.strip(): child_iters.append(ci) catalog = [ci.text for ci in child_iters] # 提取word文本框中文本 file = docx.Document(file_path) children = file.element.body.iter() child_iters = [] for child in children: # 通过类型判断目录 if child.tag.endswith('textbox'): for ci in child.iter(): if ci.tag.endswith('main}r'): child_iters.append(ci) textbox = [ci.text for ci in child_iters]

AlternateContent这个标签是第一次做的时候提取的,当时还比较灵验,最近发现有些文本域又提取不到,又重新找到了‘pict’的标签,目前找标签都是基于测试的,如可以查一下那个标签是对应文本域的就好了。 —————————————————————————————————————— 文本域的标签,第一次找的是AlternateContent,后来发现对有些文本域失效;第二次又找到了pict,基本覆盖了测试的所有文本域;第三次把word文档的标签都找出来看了一下,发现textbox这个标签看着更靠谱,用它测试了一下,也能覆盖所有的测试文本域,决定就选择这个标签。

提取文本后,又有了新需求,提取的文本很多都不成句,呈短语或单词的形式,需要把提取的文本还原成段落形式:

file = docx.Document(file_path) children = file.element.body.iter() child_iters = [] tags = [] for child in children: # 通过类型判断目录 if child.tag.endswith(('AlternateContent','textbox')): for ci in child.iter(): tags.append(ci.tag) if ci.tag.endswith(('main}r', 'main}pPr')): child_iters.append(ci) text = [''] for ci in child_iters : if ci.tag.endswith('main}pPr'): text.append('') else: text[-1] += ci.text ci.text = '' trans_text = ['***'+t+'***' for t in text] print(trans_text) i, k = 0, 0 for ci in child_iters : if ci.tag.endswith('main}pPr'): i += 1 k = 0 elif k == 0: ci.text = trans_text[i] k = 1 file.save('E:/***/test.docx')

把标签pPr当做换行标志, 把提取的文本每段前后都加了“***”后又写回文档中。

注:这里又发现AlternateContent这个标签必须要带上,否则可以提取文本域内的文字,但改变文字写回去保存word不显示更改后的文字。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有