python-docx自动替换关键字

本文探讨了在使用python-docx库时遇到的问题,包括无法保留原有图片和线段、格式丢失以及文本被意外分割。作者寻求解决方案,并分享了批量将doc转换为docx的代码片段。
摘要由CSDN通过智能技术生成

原本打算是能自动将旧的docx文件中的关键字替换,生成新的docx文件,格式、线段、图片、页眉页脚等都不变
结果目前有一下几点问题(后半部分更新已解决):
1.docx只能新增图片,不能保留原有的图片,不能保留线段
2.有的文字格式可以保留,有的不行
3.paragraph.run会将"编制:郭锋"切割为"编/制:郭/锋"(这什么鬼?)
目前只能做到提示功能,提示哪个文件需要修改,需要修改什么。
求大神指导怎么解决以上几个问题!!!
下面附代码(有一部分代码是我抄的)

import copy
import docx
import os
def change_key(doc, new_doc, dic):

    if dic and doc and new_doc:
        count = 0
        doc_path =  doc
        new_doc_path =  new_doc
        doc_file = docx.Document(doc_path)
        # 替换段落内容
        #print(doc_file._element.xml)
        for paragraph in doc_file.paragraphs:
            # 深度复制段落内容,包括样式。如果不深度复制,样式会丢失(这下面原来的代码不能保证保留样式。。。)
            #print(paragraph.style)
            # list_runs = copy.deepcopy(paragraph.runs)
            # paragraph.clear()
            # #文字替换
            # for run in list_runs:
            #     for name in dic:
            #         if name in run.text:
            #             value = dic[name]
            #             print(name+"->"+str(value))
            #             run.text = run.text.replace(name, str(value))
            #             count+=1
            #     # 段落样式的复制
            #     paragraph.add_run(run.text, run.style)
            for name in dic:
            	if name in paragraph.text:
            		print(name+"->"+dic[name])
            		count+=1
        # 替换表格内容
        for table in doc_file.tables:
            # 深度复制表格内容,包括样式, 如果不深度复制,样式会丢失
            table_style = copy.deepcopy(table.style)
            for row in table.rows:
                for cell in row.cells:
                    for name in dic:
                        if name 
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值