首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python需保留文档格式时替换word文字

Python需保留文档格式时替换word文字

作者头像
小田测测看
发布2026-06-17 18:02:41
发布2026-06-17 18:02:41
460
举报

有时,使用Python替换Word文档中的文字时,‌默认操作可能破坏原有格式‌,这时可以利用Python的Win32com功能来实现。接下来,将介绍如何通过Find.Execute方法来进行内容的查找与替换。

以下是微软官方这个方法参考的释义

名稱

必要/選用

資料類型

描述

FindText

選用

Variant

要搜尋的文字。 請使用空字串 ("") 來單獨搜尋格式。 您可以藉由指定適當的字元程式碼來搜尋特殊字元。 例如,"^p" 會對應至段落標記,而 "^t" 會對應至定位字元。

MatchCase

選用

Variant

True 是表示 指定之 find 文字是區分大小寫。 對應於「尋找與替換」對話框 (編輯選單) 中的「匹配案件」勾選框。

MatchWholeWord

選用

Variant

True 是表示 讓尋找作業找出整個單字,不屬於較長的單字的文字。 會對應至 [ 尋找及取代] 對話方塊中的 [ 全字拼寫須相符] 核取方塊。

MatchWildcards

選用

Variant

True 是表示 讓尋找文字是特別的搜尋運算子。 會對應至 [ 尋找及取代] 對話方塊中 使用萬用字元] 核取方塊。

MatchSoundsLike

選用

Variant

True 是表示 讓尋找作業找出 words 類似尋找文字的聲音。 會對應至 [ 尋找及取代] 對話方塊中的 類似的聲音] 核取方塊。

MatchAllWordForms

選用

Variant

True 是表示 讓尋找作業找出所有形式的尋找文字 (例如"sit 這個"會找出"坐"和"坐")。 會對應至 [ 尋找及取代] 對話方塊中的 [ 尋找所有形態] 核取方塊。

Forward

選用

Variant

True 是表示 向前搜尋 (直到文件的結尾)。

Wrap

選用

Variant

如果搜尋是從文件開頭以外的位置開始而且到達文件的結尾,這個引數會控制將發生的事件 (如果 Forward 設定為 False,則會相反)。 此引數也會控制如果選取範圍或選取範圍或範圍中找不到範圍和搜尋文字會發生什麼事。 可能是 WdFindWrap 常數之一。

Format

選用

Variant

True 是表示 讓尋找作業找出格式中及 (或) 而不是、 尋找文字。

替換

選用

Variant

取代文字。 若要刪除 Find 引數指定的文字,請使用空字串 ("")。 您可以指定特殊字元和進階搜尋準則,就如同針對 Find 引數所做的一樣。 若要將圖形物件或其他非文字項目指定為取代項目,請將此項目移至 [剪貼簿] 並針對 ReplaceWith 指定 "^c"。

Replace

選用

Variant

指定所要進行的取代數目: 一個、 全部或無。 可以是任何 WdReplace 常數。

MatchKashida

選用

Variant

True 是表示 如果尋找作業使用比對 kashida 阿拉伯文文件中的文字。 此引數可能無法使用時,根據您所選取或安裝的語言支援 (例如 US English)。

MatchDiacritics

選用

Variant

True 是表示 如果尋找作業對符合從右至左語言之文件中的讀音符號的文字。 此引數可能無法使用時,根據您所選取或安裝的語言支援 (例如 US English)。

MatchAlefHamza

選用

Variant

True 是表示 如果尋找作業使用比對 alef hamzas,搜尋在阿拉伯文文件中的文字。 此引數可能無法使用時,根據您所選取或安裝的語言支援 (例如 US English)。

MatchControl

選用

Variant

True 是表示 如果尋找作業對符合從右至左語言文件中的雙向控制字元的文字。 此引數可能無法使用時,根據您所選取或安裝的語言支援 (例如 US English)。

MatchPrefix

選用

Variant

True 是表示 要比對搜尋字串開頭的文字。 會對應至 [ 尋找及取代] 對話方塊中的 [ 前置詞須相符] 核取方塊。

MatchSuffix

選用

Variant

True 是表示 以符合文字結尾的搜尋字串。 會對應至 [ 尋找及取代] 對話方塊中的 相符項目尾碼] 核取方塊。

MatchPhrase

選用

Variant

True 是表示 會忽略所有空格和控制字元單字之間。

IgnoreSpace

選用

Variant

True 是表示 會忽略單字之間的空格。 會對應至 [ 尋找及取代] 對話方塊中的 [ 略過空白字元] 核取方塊。

IgnorePunct

選用

Variant

True 是表示 會忽略文字間所有標點符號字元。 會對應至 [ 尋找及取代] 對話方塊中的 [ 略過標點符號] 核取方塊。

代码语言:javascript
复制
import os
import win32com.client
docx_path = 'demo.docx'
app = win32com.client.DispatchEx("Kwps.Application")
doc = app.Documents.Open(os.path.abspath(docx_path), ReadOnly=0)
oldstr = "hello"
newstr = "world"
app.Selection.Find.Execute(oldstr, False, False, False, False, False, True, 1, False, newstr, 2)
doc.Close()
app.Quit()
参数说明
  • OldStr:搜索词
  • True:是否区分大小写
  • True:完全匹配的单词,而非单词中的部分(全字匹配)。
  • True:使用通配符。
  • True:同音。
  • True:查找单词的各种形式。
  • True:向文档尾部搜索。
  1. True:搜索的文本需要与原始文本完全匹配,包括格式。
  2. NewStr:替换的新文本
  3. 2:替换的个数,其中0表示不替换,1表示只替换第一个匹配到的文本,而2表示替换所有匹配到的文本。

更多方法参考

https://learn.microsoft.com/zh-tw/office/vba/api/word.find.execute

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程拾光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档