在保留样式文档库的同时替换段落中的字符串 [英] Replace string in paragraph while keeping style docx library

查看:31
本文介绍了在保留样式文档库的同时替换段落中的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在替换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;项目是我如何在表格(其中表格可以是任意大小)中替换文本的示例(一个文件)。

https://github.com/ShayHill/replace_docx_tables

这篇关于在保留样式文档库的同时替换段落中的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆