想要从docx文档中读取各层目录,即便是翻了官方文档,也没有找到对应内容,最后看了代码,总算是略有所得,写篇文章记录一下。

python-docx中与标题相关有一个函数,添加标题,add_heading(),我就是从这个函数入手的。翻了下源码,这个函数是这样的,下面附上源码。

    def add_heading(self, text="", level=1):"""Return a heading paragraph newly added to the end of the document.The heading paragraph will contain *text* and have its paragraph styledetermined by *level*. If *level* is 0, the style is set to `Title`. If *level*is 1 (or omitted), `Heading 1` is used. Otherwise the style is set to `Heading{level}`. Raises |ValueError| if *level* is outside the range 0-9."""if not 0 <= level <= 9:raise ValueError("level must be in range 0-9, got %d" % level)style = "Title" if level == 0 else "Heading %d" % levelreturn self.add_paragraph(text, style)

我发现“添加标题”这个功能实际上是调用的“添加段落功能”,传递的参数总共有2个,一个是text即内容,一个是style即样式。

因此在python-docx中,标题应该是被视为段落的,与普通段落区别在于样式,从源码中可以看到标题的样式应该是“Title”或者“Heading %d”。

而我想获得标题那么就应该对段落样式进行判断,符合上述两种样式的记为标题。在这种情况下,输出了下docx文章中的标题,发现没有序号,就顺便做了个标题排序,下面附上代码。

def catalogue_get(doc):docx = Document(doc).add_headinglastest_heading = 0record = ['1']  #记录目录结构point = '.'for paragraph in docx.paragraphs:if paragraph.style.name[:7] == 'Heading':this_heading = int(paragraph.style.name[-1])result = ''.join(record) + pointif this_heading == 1 and lastest_heading == 0:heading = ''.join(record) + '.'else:if this_heading > lastest_heading:record.append('1')elif this_heading == lastest_heading:record[-1] = str(int(record[-1]) + 1)else:record[this_heading - 1] = str(int(record[this_heading - 1]) + 1)record[this_heading:] = []heading = '.'.join(record) + point    #显示一段目录print(heading,paragraph.text,paragraph.style.name,sep='   ')lastest_heading = this_heading

我觉得python-docx中应该有标题的序号,但是是在是没找到了,如果有人发现了,请告诉我一声。另外,如果哪里写错了,可以踢我下。

python-docx获取docx文档多级目录相关推荐

  1. python如何向word文档插入目录

    要在Python中向Word文档插入目录,可以使用python-docx库.首先安装这个库,然后使用如下代码来打开一个Word文档,并在文档中插入目录: from docx import Docume ...

  2. python怎么获取word文档的章节_python读取word文档的方法

    本文实例讲述了python读取word文档的方法.分享给大家供大家参考.具体如下: 首先下载安装win32com from win32com import client as wc word = wc ...

  3. Python3-word文档操作(二):利用python获取word文档的内容

    上一篇,学习了是用python的docx库创建一个word文档,并且编辑了标题和正文.本篇继续python操作word之旅:利用python来获取word文档的内容. python脚本: # -*- ...

  4. python生成word目录_使用Python更新MS Word .docx文档的目录(目录)

    我使用python包" python-docx"来修改MS Word .docx文档的结构和内容.该软件包无法更新TOC(目录)[Python: Create a "Ta ...

  5. Python批量提取docx格式Word文档中所有批注

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...

  6. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  7. js从服务器获取word文档,javascript - 使用Office.js API将Word文档(.docx)保存到后端服务器 - 堆栈内存溢出...

    我在将byte数组(使用Office.js从Microsoft Office的任务窗格中获取)保存到Word文档文件(在服务器端)时遇到了一些麻烦. 这就是我在做什么: 我正在使用此库获取Word文档 ...

  8. python-docx中文开发文档_使用Python语言-docx生成Word文档

    本文主要向大家介绍了使用Python语言-docx生成Word文档,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. < 学会来使用python操作数据表和PDF,今天我们尝试 ...

  9. php操作Word之com组件-获取word文档页码和更新目录

    此文章包含:   1.win10系统中:com组件配置和为什么找不到 Microsoft Word 97 - 2003 文档 的解决方法   2.调用com获取word文档总页码   3.调用com自 ...

最新文章

  1. Struts+Spring+Hibernate练习(完整)(1)
  2. GENTLE.NET(六)--空值处理
  3. 【架构】软件分层架构视角图
  4. SignalR 实现web浏览器客户端与服务端的推送功能
  5. JIL 编译与 AOT 编译
  6. Angular Render2
  7. 小贷公司的风险成因及应对策略——风险篇
  8. 如何让你的代码没有Bug?GitHub排名第一的项目提出了一劳永逸的方法
  9. linux 什么数据类型 8字节,linuxea:go数值类型(8)
  10. 工具 | 实用的嵌入式软件测试工具
  11. 时间序列的平稳性检验方法汇总篇
  12. 提示获取硬盘分区失败,可能缺少硬盘驱动(ThinkStation使用U启动重装系统)
  13. 常见神经系统疾病的临床诊断及处理原则题库【2】
  14. Java数据结构-Set
  15. No mapping for POST
  16. Linux文本三剑客
  17. 308 permanent redirect怎么解决_「网站」WordPress网站更改固定链接以后怎么解决404错误...
  18. 如何巧妙回答离职原因
  19. 有谁知道10级的山丘之王是怎么死的?
  20. [论文阅读]Representative Forgery Mining for Fake Face Detection

热门文章

  1. 基于深度学习的水下声纳图像分类方法研究
  2. 深度学习面试:用猫和狗的数据做图像分类,分类的效果不好怎么办?
  3. 【C语言】八进制转换为十进制
  4. (信贷风控十)催收评分卡的介绍
  5. php版本中gd什么东西,PHP下GD安装全攻略
  6. QT如何修改[设计师界面类]的名称(窗口或控件名字)?
  7. Log4j配置文件例子
  8. k12计算机科学框架,计算机科学教育人人享有的机会——美国《K-12计算机科学框架》的特点与启示.doc...
  9. java判断均线_EWMA:EWMA指数加权移动平均模型的Java实现
  10. 如何使用VS Code创建vue项目