python - 如何用 python 搜索和替换 ms word 文档中所有出现的字符串?

标签 python vba ms-word win32com

我现在很困惑。基于 Can I use Win32 COM to replace text inside a word document?,我能够编写一个简单的模板系统,从模板 word 文档(Python 中)生成 word 文档。

我的问题是“文本字段”中的文本不是这样找到的。即使在 Word 本身中也没有搜索所有内容的选项 - 实际上您必须在“主文档”和“文本字段”之间进行选择。作为 Windows 世界的新手,我尝试浏览 VBA 文档,但没有找到任何帮助(可能是因为“文本字段”是一个非常常见的术语)。

word.Documents.Open(f)
wdFindContinue = 1
wdReplaceAll = 2
find_str = '\{\{(*)\}\}'
find = word.Selection.Find

find.Execute(find_str, False, False, True, False, False, \
True, wdFindContinue, False, False, False)

while find.Found:
    t = word.Selection.Text.__str__()
    r = process_placeholder(t, answer_data, question_data)

    if type(r) == dict:
        errors.append(r)
    else:
        find.Execute(t, False, True, False, False, False, \
        True, False, False, r, wdReplaceAll)

这是我代码的相关部分。到目前为止,我已经能够自己解决所有问题(提示:如果你想替换超过 256 个字符的字符串,你必须通过剪贴板等来完成......)

最佳答案

也许您可以使用 OpenOffice API使用 UNO组件技术。随着Python-UNO bridge您可以连接到以 headless 模式运行的 OpenOffice 实例。看tutorial开始吧。
这对于您的场景来说可能有点矫枉过正,但它是一个非常强大和灵活的解决方案。

关于python - 如何用 python 搜索和替换 ms word 文档中所有出现的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2852857/

相关文章:

python - 用于逻辑回归的 Shapley?

vba - MS Excel 进行子表/智能分组

SQL 字符串太长

com - Word OLE 自动化 - 删除首页并操作页眉和页脚

c# - 与 GemBox for word 类似的应用

python - Jinja2 模板在 Django 1.9 中不起作用

python - 列出所有 memcached 键/值

python - 有人在使用 pandas 加载 csv 文件时知道 "sql error"

vba - 如何从VBA向命令窗口写入消息?

image - 如何在Word中插入图片并调整其大小?