Python 在Word中查找并替換文本

在操作Word文檔時,如果想要修正一處反復出現的拼寫錯誤,統一文中前后不一致的術語,或者將文檔中所有的舊聯系方式更新為新號碼。這時我們可以使用 Word中的查找替換功能,快速定位并批量處理文檔中的特定文本,提升編輯效率。本文將通過以下幾個示例介紹如何使用Python在Word中查找指定文本并替換

文章目錄

    • Python 查找并替換所有指定文本
    • Python 使用正則表達式查找并替換文本
    • Python 查找文本并用圖片替換文本

要實現通過Python操作Word文檔,我們需要安裝 Spire.Doc for Python 庫。其pip安裝命令如下:

pip install Spire.Doc

Python 查找并替換所有指定文本

Spire.Doc for Python 庫提供的 Document.Replace() 方法,可以查找Word 文檔中的指定文本然后將所有匹配項直接替換為新的文本。

示例代碼如下:

from spire.doc import *
from spire.doc.common import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("實驗.docx")# 查找指定文本并替換為新文本
document.Replace("實驗", "研究", False, True)# 保存結果文檔
document.SaveToFile("查找并替換文本.docx", FileFormat.Docx2016)
document.Close()

如果僅需替換第一個匹配的文本,可以在替換前將 Document.ReplaceFirst 屬性設置為 True

# 僅替換第一個查找到的文本
document.ReplaceFirst = True
# 查找指定文本并將第一個匹配項替換為新文本
document.Replace("實驗", "研究", False, True)

查找并替換Word文本

Python 使用正則表達式查找并替換文本

正則表達式提供了豐富的元字符和操作符,可以根據不同的業務規則靈活調整匹配條件,滿足各種復雜的替換需求。除了普通替換外,你也可以創建一個正則表達式,然后將其作為作為參數傳遞給 Document.Replace() 方法來替換。

示例代碼如下:

from spire.doc import *
from spire.doc.common import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("南極洲.docx")# 創建一個正則表達式來匹配整數或者小數
regex = Regex(r'[0-9]+.{0,1}[0-9]{0,2}')# 查找匹配文本并替換
document.Replace(regex, "xxxx")# 保存文檔
document.SaveToFile("正則表達式查找替換.docx", FileFormat.Docx2016)
document.Close()

正則表達式查找替換文本

Python 查找文本并用圖片替換文本

用圖片替換文本的實現思路是:先查找指定文本,然后在查找到的文本位置處插入圖片,最后再刪除查找到的文本。步驟如下:

  1. 使用 LoadFromFile() 方法加載 Word 文檔。
  2. 使用 FindAllString() 方法查找文檔中的所有指定文本。
  3. 遍歷每一個查找到的結果,然后:
    • 使用 DocPicture.LoadImage() 方法加載圖片;
    • 將查找到的文本轉換為單個文本范圍;
    • 獲取文本范圍在段落中的索引;
    • 通過 Insert() 方法在文本范圍的索引位置處插入圖片;
    • 通過 Remove() 方法刪除段落中的文本。
  4. 使用 SaveToFile() 方法保存生成的文檔。

示例代碼如下:

from spire.doc import *
from spire.doc.common import *# 加載 Word 文檔
document = Document()
document.LoadFromFile("Python介紹.docx")# 在文檔中查找特定的文本
selections = document.FindAllString("此處為圖片", True, True)
index = 0
testRange = None# 遍歷查找到的結果
for selection in selections:# 加載圖片pic = DocPicture(document)pic.LoadImage("python.png")# 將查找到的文本作為單個文本范圍testRange = selection.GetAsOneRange()# 獲取文本范圍在其所屬段落中的索引index = testRange.OwnerParagraph.ChildObjects.IndexOf(testRange)# 在索引位置插入圖片testRange.OwnerParagraph.ChildObjects.Insert(index, pic)# 刪除文本范圍testRange.OwnerParagraph.ChildObjects.Remove(testRange)# 保存文檔
document.SaveToFile("查找并替換為圖片.docx", FileFormat.Docx2016)
document.Close()

替換文本為圖片

如何去除水印?點擊申請一個月試用授權:
https://www.e-iceblue.cn/misc/temporary-license.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73857.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 筆記 (二)

Python Note 2 1. Python 慢的原因2. 三個元素3. 標準數據類型4. 字符串5. 比較大小: 富比較方法 rich comparison6. 數據容器 (支持*混裝* )一、允許重復類 (list、tuple、str)二、不允許重復類 (set、dict)1、集合(set)2、字典(dict)3、特殊: 雙端隊列 deque 三、數據容器的共…

kill子進程后再wait可以嗎?

在父進程中先使用 kill 函數終止子進程,之后再使用 wait 函數是可行的,下面從原理、使用示例、注意事項幾個方面詳細說明。 原理 kill 函數:其作用是向指定進程發送信號。當向子進程發送 SIGTERM(通常用于請求進程正常終止&…

ai-api-union項目,適配各AI廠商api

項目地址:alpbeta/ai-api-union 需求:實現兼容各大模型廠商api的流式對話和同步對話接口,本項目現兼容智譜、豆包、通義、通義版deepseek 設計 一個ChatController類對外暴露這兩個接口,入參都為ChatRequest請求類,…

【QT】QT樣式設計

QT樣式設計 一、QT工程中添加資源文件1.資源文件:2. 添加步驟:3. 新增資源文件以及刪除現有的資源文件4. 使用資源文件 二、QT中的qss語句(樣式設計語句)1. 樣式設計2.常見的qss語句示例代碼: 一、QT工程中添加資源文件 1.資源文件&#xff…

Megatron-LM中的deepseek-v3實現

Megatron-LM:https://github.com/NVIDIA/Megatron-LM/tree/main 使用此倉庫構建的著名的庫也有很多,如: Colossal-AI, HuggingFace Accelerate, and NVIDIA NeMo Framework.Pai-Megatron-Patch工具是阿里人工智能平臺PAI算法團隊研發,ai-Megatron-Patch…

[mlr3] Bootstrap與交叉驗證k-fold cross validation

五折交叉驗證因其無放回分層抽樣和重復驗證機制,成為超參數調優的首選; 而Bootstrap因有放回抽樣的重復性和驗證集的不穩定性,主要服務于參數估計(置信區間的計算)而非調優。 實際應用中,可結合兩者優勢&am…

某大麥手機端-搶票

引言 僅供學習研究,歡迎交流 搶票難,難于上青天!無論是演唱會、話劇還是體育賽事,大麥網的票總是秒光。作為一名技術愛好者,你是否想過用技術手段提高搶票成功率?本文將為你揭秘大麥手機端搶票的核心技術…

最常使用的現代C++新特性介紹

現代 C泛指的是從 C11 之后的 C標準. 從 C11 開始, C標準委員會實行班車制, 沒三年發布一個新版本, 如果一個功能在新版本發布之前已經準備好, 則可以加入該版本中, 否則延后到下一個版本. 語言核心 自 C11 開始, 語言語法層面加了許多語法糖, 還有增加了一些新語法.使得 C語…

SQL Server:當在刪除數據庫時因為存在觸發器而無法刪除

當在刪除數據庫時因為存在觸發器而無法刪除,你可以通過禁用觸發器來解決這個問題。下面為你介紹在 SQL Server 里禁用和啟用觸發器的方法。 禁用數據庫中所有表的觸發器 你可以使用系統視圖 sys.triggers 來查詢數據庫里所有的觸發器,然后生成禁用這些…

【Linux篇】進程入門指南:操作系統中的第一步

步入進程世界:初學者必懂的操作系統概念 一. 馮諾依曼體系結構1.1 背景與歷史1.2 組成部分1.3 意義 二. 進程2.1 進程概念2.1.1 PCB(進程控制塊) 2.2 查看進程2.2.1 使用系統文件查看2.2.2 使?top和ps這些??級?具來獲取2.2.3 通過系統調用…

銷售易vs紛享銷客:制造行業CRM選型深度解析

“以客戶為中心”,顧名思義就是指讓客戶貫穿企業市場、研發、生產、銷售、服務全流程,以客戶需求為導向進行經營。CRM作為企業數字化建設基礎設施,在企業高質量發展進程中扮演著重要角色。在眾多CRM解決方案中,騰訊旗下CRM銷售易憑…

【JavaScript】九、JS基礎練習

文章目錄 1、練習:對象數組的遍歷2、練習:猜數字3、練習:生成隨機顏色 1、練習:對象數組的遍歷 需求:定義多個對象,存數組,遍歷數據渲染生成表格 let students [{ name: 小明, age: 18, gend…

代碼隨想錄day31 貪心part05

56.合并區間 以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。 示例 1: 輸入:in…

《C++11:通過thread類編寫C++多線程程序》

關于多線程的概念與理解,可以先了解Linux下的底層線程。當對底層線程有了一定程度理解以后,再學習語言級別的多線程編程就輕而易舉了。 【Linux】多線程 -> 從線程概念到線程控制 【Linux】多線程 -> 線程互斥與死鎖 語言級別的…

c++位運算總結

在C中,位運算是對二進制位進行操作的運算,主要有以下幾種: 1. 按位與( & ):兩個操作數對應位都為1時,結果位才為1,否則為0。例如 3 & 5 , 3 二進制是 0000 0011…

1.1 計算機網絡的概念

首先來看什么是計算機網絡,關于計算機網絡的定義并沒有一個統一的標準,不同的教材有 不同的說法(這是王道書對于計算機網絡的定義),我們可以結合自己的生活經驗去體會這個 定義。 可以用不同類型的設備去連接計算機網絡…

用LLama factory時報類似Process 2504721 got signal: 1的解決方法

之前用nohup來遠程跑LLama factory微調腳本,是沒有問題的,但今天發現運行類似下面這個命令時, nohup llamafactory-cli train examples/train_qlora/qwen_lora.yaml 只要一關閉ssh session,就會終止訓練,報類似&…

python常用內置時間函數+藍橋杯時間真題

1.time 1.1 time.time() 時間戳指:1970年1月1日開始到現在所經過的秒數 import time print(time.time()) # 輸出可得1970年1月1日開始到執行此代碼所經過的秒數 1.2 time.localtime() 返回一個當前時間的時間對象,具體信息,并且可以單獨…

一個用 C 語言打印出所有三位數水仙花數的程序

水仙花數(Narcissistic number)是指一個三位數,其各位數字的立方和等于該數本身。例如:153 是一個水仙花數,因為 (1^3 5^3 3^3 153)。 以下是一個用 C 語言打印出所有三位數水仙花數的程序: 代碼實現 …

利用 VSCode 配置提升 vibe coding 開發效率

利用 VSCode 配置提升 vibe coding 開發效率 Vibe Coding(氛圍編程)是一種基于AI的編程方法,其核心在于通過自然語言描述軟件需求,再由大規模語言模型(LLM)自動生成代碼,從而實現對傳統手寫編程…