文档处理效率已成为现代办公的核心竞争力,面对海量Word文档中重复繁琐的文本修改需求,手动操作不仅耗时费力,更易因人为疏忽导致数据偏差。Python凭借其强大的自动化处理能力,为文档批量化智能改造提供了全新解决方案。通过编写简洁的Python程序,开发者能够精准定位文档内容,实现多条件的智能替换,确保了文档处理的一致性与准确性。本文将演示如何使用Python查找并替换Word文档中的文本

  • 用Python查找并替换Word文档文本
  • 通过正则表达式替换Word文档文本
  • 查找Word文档文本并替换为图片

本文使用的方法需要用到免费的Free Spire.Doc for Python,PyPI:pip install spire.doc.free

用Python查找并替换Word文档文本

我们可以加载Word文档到Document实例中,然后使用Document.Replace()方法,指定文本以及替换文本来替换Word文档中,制定文本的所有匹配项。如果只需要替换替换查找到的首个匹配项,则需要在替换前将Document.ReplaceFirst属性设置为True。以下是操作步骤示例:

  1. 导入所需模块:Document
  2. 创建Document实例,使用Document.LoadFromFile()方法从文件载入Word文档。
  3. 如只需替换首个匹配项,将Document.ReplaceFirst属性设置为True
  4. 使用Document.Replace()方法,将指定文本替换为新文本。
  5. 使用Document.SaveToFile()保存Word文档。

代码示例

from spire.doc import Document

# 创建 Document 对象
document = Document()
# 加载 Word 文档
document.LoadFromFile("Sample.docx")

# 设置替换首个匹配项
#document.ReplaceFirst = True

# 查找特定文本并替换其所有实例为另一个文本
document.Replace("Vitamin C", "维生素C", False, True)

# 保存处理后的文档
document.SaveToFile("output/查找替换文本.docx")
document.Close()

结果
Python查找替换Word文档文本

通过正则表达式替换Word文档文本

除了直接使用明确的文本进行查找替换外,Document.Replace()方法还支持通过正则表达式查找并替换文本。以下是操作步骤示例:

  1. 导入所需模块:DocumentRegex
  2. 创建Document实例,使用Document.LoadFromFile()方法从文件载入Word文档。
  3. 使用正则表达式创建一个Regex对象。
  4. 使用Document.Replace()方法,将正则表达式对应的文本替换为新文本。
  5. 使用Document.SaveToFile()保存Word文档。

代码示例

from spire.doc import Document, Regex

# 创建 Document 对象
document = Document()
# 加载 Word 文档
document.LoadFromFile("Sample1.docx")

# 创建一个正则表达式来匹配以 # 开头的文本
regex = Regex(r"ORD-\d{8}")

# 查找匹配正则表达式的文本并替换为另一个文本
document.Replace(regex, "ORD-[订单ID]")

# 保存文档
document.SaveToFile("output/正则表达式查找替换.docx")
document.Close()

结果
Python通过正则表达式替换Word文档文本

查找Word文档文本并替换为图片

我们也可以直接使用Document.FindAllString()方法来查找并获取到Word文档中的指定文本,然后将其删除并在对应位置插入一张图片,从而实现查找文本并替换为图片。一下是操作步骤示例:

  1. 导入所需模块:DocumentDocPicture
  2. 创建Document实例,使用Document.LoadFromFile()方法从文件载入Word文档。
  3. 使用Document.FindAllString()查找指定文本,并获取匹配项为一个集合。
  4. 遍历集合中的文本:

    • 创建DocPicture对象,使用DocPicture.LoadImage()方法从文件载入用于替换的图片。
    • 使用TextSelection.GetAsOneRange()获取查找到的文本为文本范围。
    • 使用TextRange.OwnerParagraph.ChildObjects.IndexOf()获取文本在对应段落的索引。
    • 使用TextRange.OwnerParagraph.ChildObjects.Insert()方法将图片插入到文本所在位置。
    • 使用TextRange.OwnerParagraph.ChildObjects.Remove()移除文本。
  5. 使用Document.SaveToFile()保存Word文档。

代码示例

from spire.doc import Document, DocPicture

# 创建 Document 对象
document = Document()
# 加载 Word 文档
document.LoadFromFile("Sample2.docx")

# 查找文档中的特定文本
selections = document.FindAllString("电脑图片", True, True)
index = 0
textRange = None

# 遍历查找结果
for selection in selections:
    # 加载图片
    pic = DocPicture(document)
    pic.LoadImage("Laptop.jpg")
    # 获取找到的文本作为单一文本范围
    textRange = selection.GetAsOneRange()
    # 获取文本范围在其所属段落中的索引
    index = textRange.OwnerParagraph.ChildObjects.IndexOf(textRange)
    # 在索引位置插入图片
    textRange.OwnerParagraph.ChildObjects.Insert(index, pic)
    # 删除文本范围
    textRange.OwnerParagraph.ChildObjects.Remove(textRange)

# 保存处理后的文档
document.SaveToFile("output/查找文本替换为图片.docx")
document.Close()

结果
Python查找Word文档文本替换为图片

本文演示了如何使用Python查找并替换Word文档中的文本,包括直接替换、正则表达式查找以及查找并替换为图片。


大丸子
12 声望3 粉丝