在保留样式文档库的同时替换段落中的字符串

本教程将介绍在保留样式文档库的同时替换段落中的字符串的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

在保留样式文档库的同时替换段落中的字符串 教程 第1张

问题描述

我正在替换Word文档的表格和段落中的字符串。然而,风格发生了变化。怎么保留原始样式格式?

with open(r"C:Usersy.IsrafilbayovDesktop	estfiles	est_namedrangesVariableNames.json") as p:
 data = json.load(p)

document = Document(r"C:Usersy.IsrafilbayovDesktop	estfiles	est_namedranges_updateF10352-JB117-FMXXX Pile XXXX As-built Memo GAIA Auto trial_v6.docx")

for key, value in data.items():
 for paragraph in document.paragraphs:
  if key in paragraph.text:
paragraph.text = paragraph.text.replace(str(key), str(value))
for key, value in data.items():
 for table in document.tables:
  for row in table.rows:
for cell in row.cells:
 for paragraph in cell.paragraphs:
  if key in paragraph.text:
paragraph.text = paragraph.text.replace(str(key),str(value))

也有类似的帖子,但对我没有帮助(可能是我做错了什么)。

推荐答案

这应该可以满足您的需求。需要docx2python 2.0.0+

from docx2python.utilities import replace_docx_text

replace_docx_text(
 input_filename,
 output_filename,
 ("Apples", "Bananas"),  # replace Apples with Bananas
 ("Pears", "Apples"),  # replace Pears with Apples
 ("Bananas", "Pears"),  # replace Bananas with Pears
 html=True,
)

如果替换字符串包含制表符或符号,您可能会遇到问题,但常规文本替换将有效并保留[1]格式。

为此,除非您指定html=False,否则docx2python不会替换格式更改的文本字符串,例如,此字符串的一部分是粗体的,在这种情况下,无论格式怎么,字符串都将被替换,并且某些格式将丢失。

[1]将保留以下内容:

    斜体

    粗体

    下划线

    罢工

    上标

    下标

    小写

    全部大写

    突出显示

    字体大小

    彩色文本

    (其他一些,但不保证)

编辑对于后续问题,怎么替换表中的标记文本?

我的工作流程是将所有格式保存在Word中。也就是说,我在Word中创建一个模板,切割出我需要的上下文,然后将所有内容像拼图一样重新组合在一起。

此GitHub;项目是我怎么在表格(其中表格可以是任意大小)中替换文本的示例(一个文件)。

好了关于在保留样式文档库的同时替换段落中的字符串的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。