【问题标题】:How do I search & replace all occurrences of a string in a ms word doc with python?如何用python搜索和替换ms word doc中所有出现的字符串?
【发布时间】:2015-02-25 05:13:08
【问题描述】:

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

我的问题是“文本字段”中的文本找不到那种方式。即使在 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 个字符替换字符串,你必须通过剪贴板等来完成......)

【问题讨论】:

    标签: python vba ms-word win32com


    【解决方案1】:

    也许您可以通过 UNO 组件技术使用 OpenOffice API。使用Python-UNO bridge,您可以连接到以无头模式运行的 OpenOffice 实例。查看tutorial 以开始使用。
    这对于您的方案来说可能有点过头了,但它是一个非常强大且灵活的解决方案。

    【讨论】:

    • 好的。但是 OpenOffice 可以很好地处理 MS Word 文件。因此,您也可以处理 Word 文件。我使用这个桥来生成各种格式的文档,例如 doc、ppt、odt 或 pdf。
    • 嗯,是的,从某种意义上说,安装 Ooo(以及其他工具)不是可用的选项。无论如何,谢谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2011-02-23
    • 2016-08-01
    • 2019-04-20
    • 2010-11-14
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多