我需要在不更改格式的情况下替换部分文本。我写了这个函数:
import docx
import os
def getText(from_filename, to_filename, old_value, new_value):
doc = docx.Document(from_filename)
for paragraph in doc.paragraphs:
print(paragraph.text)
new_text = paragraph.text.replace(old_value, new_value)
print(new_text)
paragraph.text = new_text
doc.save(to_filename)
问题是粗体字体和字体苍蝇。我不知道如何做同样的事情,但保留格式。
为此,您需要使用段落属性
runs一个简单的选项,但它不起作用(我将其作为示例展示,下面我将展示一个可行的解决方案):
原因是其中的文本
runs可能是碎片化的,例如,您{{<ключ>}}和在某些情况下run.text将拥有整个模板字符串,而在某些情况下它将被分成{{,<ключ>,}}.我一直在寻找正确处理的算法
runs并找到了答案,解决方案:模板文件 template.docx如下所示:
Save_style.docx 结果: