word的按样式输出

2020年05月11日 星期一

在编写一个标准,写的时候呢就会把条文正文和条文说明写在一块,方便编写和对照查看(如下图所示)。但是呢最终的成文必然是两者需要分开的。如果条文很多的话就会非常麻烦。可是word又没有图层功能,可以快速筛选出两者。于是尝试采用下python的相关扩展库来实现这一功能。……

​ 在编写一个标准,写的时候呢就会把条文正文和条文说明写在一块,方便编写和对照查看。但是呢最终的成文必然是两者需要分开的。如果条文很多的话就会非常麻烦。可是word又没有图层功能,可以快速筛选出两者。于是尝试采用下python的相关扩展库来实现这一功能。能找到的处理模块为python-docx(0.8.10)。这里以蜀道难这首诗来说明。蓝色部分为样式“我的注释”。

批注 2020-05-11 170405

​ 粗粗摸索了下该模块,还是感觉不够完善,不过最终还是实现了上述功能。具体代码如下所示:

# ***************** docx_text ****************
# 用于分样式输出word
# kiritanimirei.cn 
# 2020年5月11日 星期一 天气晴
# ********************************************

from docx import Document
# 读取某文档
filename = '蜀道难.docx'
doc = Document(filename)
for obj in doc.paragraphs:
    # 清楚选中图层文本
    if obj.style.name == '我的注释': 
        obj.clear()
        obj.style = None        
doc.save('蜀道难-2.docx') # 保存至新文本

这里paragraphs是各行的序列。对于每一行其sytle属性用于设定其样式。如果涉及到行内每个字符,需要采用runs对象。程序执行后生成的word效果如下所示:

批注 2020-05-11 170946

程序执行非常快速,例如对于本案例一个50多页的word文件,不到1s秒就完成了输出。与此同时对于图片、表格的支持也非常完美。标准中一般有众多公式,需要注意的是如果是直接插入mathtype公式,转化后的word公式将会消失。而word自带的公式则可以顺利输出。

​ 注意到clear仅仅是清除文本,而不除去该行且保留该行样式。上述通过将style设置为None可使改行转为默认样式。如果没有这样做其效果是下图所示:

批注 2020-05-11 181226

不过无论如何空白行依旧存在。这个采用该模块无法实现。(通过试验表明尽管paragraphs是list,但采用del命令也无法实现)。不过word自身可以实现该功能,具体可参考

按【Ctrl+H】快捷键,打开替换对话框,点击【更多】按钮,打开【特殊格式】下拉菜单,从中选择【段落标记】。在【查找内容】点击两次【段落标记】,在【替换为】点击一次【段落标记】,系统就会自动输入空行参数,点击【全部替换】即可。

实践中一次可能还无法清除全部空白行,多操作几次即可。

批注 2020-05-11 171846

同样的方法,可以将正文给去除。只需设置style.name'Normal'


更新于 2020年5月11日 星期一 天气晴

精选博客

荷载-位移曲线相关

讲一个很少或几乎没有书去讲的一个问题,就是关于如何解读荷载-位移曲线的。判断平衡状态是否稳定可通过应用Ляпунов(李雅普诺夫)一次近似理论[1],即对于方程通过特征值实部正负来加以判断: (1)如果其特征方程所有特征根均具负实部,则进行轻微扰动后,将依旧回到原平衡位置; (2)如果特征方程至少具有一个正实部的根,则进行轻微扰动后,将无法回复到原平衡位置。……

继 续 阅 读

关于孙杨禁赛的一点疑惑

国际体育仲裁法庭的判决书里写着WADA要求的是2到8年的禁赛,然后说是根据国际泳联禁药控制条例(FINA DOPING CONTROL RULES)10.7.1条做出八年处罚。Considering that, in June 2014, the Athlete was found guilty of a first anti-doping rule violation (ADRV), the……

继 续 阅 读

博士论文序言

貌似在大论文里序言部分并不是必须的,然而我却以为这就像块自留地一样,可以相对自由的漫无目的说开去。先讲两个小故事。博士论文说到头其实就是求特征值实部的问题,事实上开始从这方面着手是相对较晚的。某日(在大论文已经写作很久之时)翻看本科时常微分方程教材时,说实话有些吃惊。这门课是本科生涯中考得最高分的一门课,然而当时教学范围只有前三章,而全书共有四章。那么最后一章是什么呢?其大标题是“稳定性与……

继 续 阅 读