因为业务需求,需要做一个可以自定义模板的导出功能,所以我使用的是关键词替换,所以就用到了 python-docx这个模块,但是在段落切分成runs匹配关键词的时候出现了把我设定好的关键词给切分成多个的情况出现,下边是我的解决办法.

    def _export_day_report_word(self):_doc = Document('../static/report-template/word/日报.docx')_map_dict = self.__map_dict_report(0)for _p in _doc.paragraphs:runs = _p.runs# 定义一个空的匹配词_temp = ''for run in runs:# 若替换词的开头在 run.text 中,结尾不在,且匹配词为空,则取出替换词的开头放入匹配词if '{' in run.text and '}' not in run.text and _temp == '':_ext = '{' + run.text.split('{')[1]_temp += _extrun.text = run.text.replace(_ext, '')continueif _temp:# 如果匹配词不为空 且 替换词的结尾在 run.text 中,则取出替换词的结尾放入匹配词if '}' in run.text:_ext = run.text.split('}')[0] + '}'_temp += _ext# 说明已经将替换词完整取出,根据词映射关系进行替换run.text = run.text.replace(_ext, str(_map_dict[_temp]))_temp = ''else:# 否则 将 run.text 追加放入匹配词_temp += run.textrun.text = ''continuefor _key, _val in _map_dict.items():if _key in run.text:run.text = run.text.replace(_key, str(_val))

其实很简单。在对逐个run进行匹配时进行一个验证,看你所设定的替换词开头符号包含在run中且结尾不包含在其中,则匹配下一个run,直到匹配到替换词的结尾符号终止,之后进行替换就ok了。

python-docx 切分runs时会将整个词切分成多个的问题相关推荐

  1. doc python 字体颜色,Python docx修改文字大小字体类型 Python-docx 实现整体修改或者部分修改文字的大小和字体类型...

    想了解Python-docx 实现整体修改或者部分修改文字的大小和字体类型的相关内容吗,Leeoo_lyq在本文为您仔细讲解Python docx修改文字大小字体类型的相关知识和一些Code实例,欢迎 ...

  2. python docx 设置字体_python docx 中文字体设置的操作方法

    这篇文章主要介绍了关于python docx 中文字体设置的操作方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近用到了docx生成word文档,docx本身用起来很方便,自带的 ...

  3. python docx库使用样例_Python docx库用法示例分析

    本文实例分析了Python docx库用法.分享给大家供大家参考,具体如下: 打开及保存文件: from docx import Document document = Document('test. ...

  4. python字体加粗代码_如何在python docx中加粗行单元格的文本?

    在python docx中,可以通过使用 Rich Text 造型.您应该为模板中需要样式化的特定字符/字符串在字符/字符串的位置提供一个上下文变量.此变量映射到 RichText 具有样式定义(在代 ...

  5. python docx模块pip安装_python安装docx模块

    python docx 怎么安装 如何安装python docx 直接 pip install docxor python -m pip install docxor sudo python -m p ...

  6. python docx tables_pythondocx保留格式替换表格内容

    如何用python-docx替换一个docx文本中的指定字符在你准备骗我之前,请做好我可能永远不会原谅你的准备. 假设我有一个doc文档,里面有一篇小短文(注意是短文不是表格),我想把from doc ...

  7. python docx模块如何删除段落_在pythondocx中更改段落格式

    我试图使用Python的Python docx模块更改多个段落的格式.在from docx import Document from docx.shared import Pt from docx.s ...

  8. Python docx添加表格后,对表格首行设置背景色

    用python docx设置word中表格的背景色 问题来源: https://stackoverflow.com/questions/26752856/python-docx-set-table-c ...

  9. python docx 批量修改docx文件内容和选择位置添加内容

    #-*- encoding:utf_8 -*- from docx import Document from docx.shared import Inches from log import log ...

最新文章

  1. php服务器日志在哪里看,云服务器日志在哪里看
  2. 关于C语言中单双引号的问题
  3. 02丨基础篇:到底应该怎么理解“平均负载”?
  4. gcc编译缺少数学库
  5. 葡萄城报表介绍:B/S 报表软件
  6. Java Integer类详解
  7. 从word得到表格数据插入数据库(6位行业代码)
  8. 正则表达式的性能评测
  9. 【089】◀▶ Microsoft Office 技巧
  10. linux发布成服务,linux服务简单部署
  11. 将小程序代码转成uni-app代码
  12. http服务器使用libevent实现get和post请求实例
  13. 【精品】爬取 国家统计局 2020年 省市县乡村 数据
  14. Google Code Jam
  15. 并查集 --算法竞赛专题解析(3)
  16. python web py入门-7-响应处理(下)
  17. matlab回车键,在Matlab中启动.exe文件后,以编程方式按一下回车键
  18. DM数据库配置开机自启动
  19. 菜鸟的数学建模之路(二):线性与非线性回归
  20. C语言视频教程-谭浩强版-小甲鱼主讲—P18

热门文章

  1. 安卓手机卡顿怎么解决_iPhone手机变卡变慢怎么办?苹果手机卡顿解决小技巧
  2. 我的2011年总结--大明zeroson程序员一周年总结
  3. c#CheckedListBox单选多选个数限制问题
  4. 罗侍田:“全员编程,广泛嵌入”(三)— 物联网时代(一)
  5. 公关会展公司:OA软件如何选型?
  6. 收集各种在线HTTP网站载入速度(响应时间)站长测试(检测)工具
  7. 金蝶kis记账王如何不显示报表中为零的数据
  8. 利用角色简化playbook
  9. 自定义消息的发送和接收的方法
  10. 写给做生意的好朋友生日祝福语:经典生日文案