简化python docx文档对象的实用程序

simplify-docx的Python项目详细描述


概述

docx文件很复杂,它们的复杂性使得抓取文档成为可能 因为他们的内容很难。这个包的目的是简化 .docx文件只包含有意义的组件,从而简化 通过转换a.docx 将文件转换成可预测的人类可读的json文件。

把复杂的文档简化为有意义的部分 需要对什么在 文件。通常,这个包的立场是 结构(正文、段落、表格等)和正文一样有意义 本身,而文本样式(字体、字体粗细等)几乎被忽略 完全,除了段落缩进和编号 通常用于创建列表、块引号等。 期权部分解释了本包所表达的意见 可根据您的需要进行更改。

用法

importdocxfromsimplify_docximportsimplify# read in a document my_doc=docx.Document("/path/to/my/favorite/file.docx")# coerce to JSON using the standard optionsmy_doc_as_json=simplify(my_doc)# or with non-standard optionsmy_doc_as_json=simplify(my_doc,{"remove-leading-white-space":False})

安装

此项目依赖于python docx包,可以通过 pip安装python docx但是,在撰写本文时,如果您希望 删除包含(a)下拉列表等表单字段的文档, 复选框和文本输入或(b)嵌套文档(子文档、altchunk, 等等),您需要克隆python docx包的这个fork

选项

一般

忽略不可见的事物

特殊符号

<表><广告>字符等效文本< /广告><正文>车厢返回\n中断\rtabchar\t位置选项卡\tnobreakhyphen-软连字符-
  • "符号为文本":(默认值=真值):特殊符号通常是cary 非基础Unicode字符的意思,特别是当 字体是一种特殊的字体,例如Wingdings。如果为真 包含为普通文本,省略字体信息。
  • "空为文本":(default=false):有多种"空" 标记,如导致当前年份的<;"w:yearlong">;标记 插入到文档文本中。如果true,请将它们作为文本包含 格式化为"[yearlong]"
  • "忽略从左到右的标记":(默认值=false):忽略从左到右的标记 标记,这是pythons csv writer无法写入的。
  • "忽略从右向左的标记":(默认值=false):忽略从右向左的标记 标记不可由pythons csv writer写入的内容。

段落样式:

段落样式标记是样式与内容的一个例外 二分法。例如,块引号通常通过缩进整型来表示 段落、有序列表、无序列表和列表嵌套是 通常用于将文档的各个部分划分为逻辑组件。

  • "包含段落缩进":(默认值=true):包括 段落(ct_p)元素上的缩进标记。缩进是 以细枝计
  • "包括段落编号":(默认值=true):包括 编号样式,包含在ct p.ppr.numpr元素中。 ilvl属性指示嵌套的级别(基于零的索引) numid属性引用特定的编号样式 包含在文档的内部样式表中。

表单元素

  • "简化下拉列表":(默认值=true):仅包括选定的 以及表单元素中的默认值、可用选项、名称和标签属性。
  • "简化文本输入":(default=true):仅包括当前 和默认值,以及表单元素中的名称和标签属性。
  • "贪婪的文本输入":(默认值=true):继续使用run 元素,当文本输入未在段落末尾结束时, 下一个块级元素也是一个段落。这通常是 当用户在编辑文本输入时显示返回键时发生 字段
  • "简化复选框":(default=true):仅包括当前 和默认值,以及表单元素中的名称和标签属性。
  • "使用复选框默认值":(default=true):如果复选框没有 value属性(通常是因为用户没有与 ,将默认值报告为复选框值。
  • "复选框为文本":(默认值=false):强制 复选框到文本,表示为"[复选框:真]""[复选框:假]"
  • "下拉列表为文本":(默认值=false):强制 文本复选框,表示为"[下拉列表:<;选定值>;]"
  • "修剪下拉选项":(默认值=true):删除上的空白 左派以及下拉选项的右侧。
  • "展平通用字段":(默认值=真值):通用字段ct_fldchar未标记为下拉、文本输入或 复选框。这些可能包括适用于特殊 格式化为文本运行(例如超链接)。如果true,则内容 一般字段的个数包含在文本的正常流中

特殊内容

  • "合并连续文本":(default=true):句子甚至单个 单词可以由多个文本元素表示。如果为真, 将连续的文本元素连接到单个文本元素。
  • "扁平超链接":(默认值=true):扁平超链接,包括 它们的内容在正常文本流中。
  • "展平智能标记":(默认值=true):展平智能标记元素, 将其内容包含在正常文本流中。
  • "展平customxml":(default=true):展平customxml元素, 将其内容包含在正常文本流中。
  • "展平simplefield":(默认值=true):展平simplefield元素, 将其内容包含在正常文本流中。

贡献

这个项目欢迎大家提出意见和建议。大多数捐款要求您同意 出资人许可协议(CLA)声明您有权并且实际上有权授予我们 使用您的捐款的权利。有关详细信息,请访问https://cla.microsoft.com" rel="nofollow">https://cla.microsoft.com

当您提交拉取请求时,cla bot将自动确定您是否需要提供 a cla并适当地装饰pr(例如,标签、注释)。只需按照说明操作 由机器人提供。您只需使用我们的CLA在所有回购协议中执行一次即可。

本项目采用了微软开源行为准则。 有关更多信息,请参见行为准则常见问题解答或 如有任何其他问题或意见,请联系opencode@microsoft.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Grid loadmask(true)在gxt中不起作用   java将字符串索引转换为整数   为什么Java泛型适用于基元数组,但不适用于基元数组?   java如何让Azure应用程序服务Tomcat将所有80/443流量转发到运行在同一应用程序服务上的JBoss   具有多个值的java转换映射到树?   java如何设置SQL server连接URL?   java设置了多个相互独立的JFrame   安全性在JAVA中如何使用RSAPrivateKey的密码短语?   java不能使用比Apache Velocity中更大的条件   如何在Java中打印字符串的所有排列   停止Android Studio自动导入java。sql。日期   对象简单计算器程序java   java如何在安卓中使用“&”符号作为字符串?   java Connect,为我的安卓应用程序从REST API发布和获取数据