如何用Python在Word文档中搜索并替换所有字符串?

6 投票
1 回答
1587 浏览
提问于 2025-04-15 22:49

我现在有点困惑。根据这个链接:我可以用Win32 COM替换Word文档里的文字吗?,我写了一个简单的模板系统,可以根据一个模板Word文档生成新的Word文档(用Python编写)。

我的问题是,"文本字段"里的文字无法用这种方式找到。即使在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个字符的字符串,你必须通过剪贴板来处理等等……)

1 个回答

2

你可以试试使用 OpenOffice 的 API,这是一种可以让你和 OpenOffice 进行互动的工具。它是通过一种叫 UNO 的技术来实现的。通过 Python-UNO 桥接,你可以连接到一个在无头模式下运行的 OpenOffice 实例。想要入门的话,可以看看这个 教程
虽然这个方法可能对你的情况来说有点复杂,但它确实是一个非常强大和灵活的解决方案。

撰写回答