DEV Community

Leon Davis
Leon Davis

Posted on

How to Search and Highlight Text in Word Documents Using Python

When working with Word documents, developers and technical writers often need to search and highlight specific text. This is especially useful for reviewing large reports, marking keywords, or preparing documents for batch processing. Manually searching and highlighting can be time-consuming and error-prone, which is why automating this task using Python can save significant effort and ensure consistency across documents.

In this guide, we’ll cover two common scenarios to highlight text in Word with Python: highlighting the first occurrence of a word and highlighting all occurrences.

Prerequisites and Installation

Before diving into the code, make sure your environment is ready. In this article, we use Spire.Doc for Python, a library that allows manipulating Word documents programmatically—including highlighting, replacing text, and formatting.

1. Install Spire.Doc

pip install spire.doc
Enter fullscreen mode Exit fullscreen mode

2. Import the required modules

from spire.doc import *
Enter fullscreen mode Exit fullscreen mode

3. Prepare your Word document

Make sure you have a .docx file to work with, for example Sample.docx. Keep it in the same directory as your script to simplify file paths.

Why Search and Highlight Text in Word with Python?

Automating text highlighting can save hours of manual work. Common scenarios include:

  • Document reviews: Highlighting all mentions of technical terms, product names, or company references.
  • Reporting: Quickly mark keywords across multiple reports for QA or auditing.
  • Batch processing: Apply consistent formatting across hundreds of documents without human error.

Automation ensures:

  • Consistency: Every instance is highlighted uniformly.
  • Efficiency: Large documents or multiple files can be processed quickly.
  • Flexibility: Easily adapt code for different colors, keywords, or styles beyond highlighting.

Highlighting the First Instance of a Text

Sometimes, you only want to search and emphasize the first mention of a keyword—perhaps to draw initial attention to it. You can achieve this by calling the FindString() method.

Example:

from spire.doc import *
from spire.doc.common import *

# Specify the input and output file paths
inputFile = "Sample.docx"
outputFile = "HighlightTheFirstInstance.docx"

# Create a Document object and load the file
document = Document()
document.LoadFromFile(inputFile)

# Find the first instance of the target text
textSelection = document.FindString("target", False, True)

# Convert the selection to a text range and apply highlighting
textRange = textSelection.GetAsOneRange()
textRange.CharacterFormat.HighlightColor = Color.get_Yellow()

# Save the modified document
document.SaveToFile(outputFile, FileFormat.Docx2016)
document.Close()
Enter fullscreen mode Exit fullscreen mode

Highlighting All Instances of a Text

Sometimes, you may want to highlight every occurrence of a keyword throughout a document. You can achieve this by calling the FindAllString() method.

Example:

from spire.doc import *
from spire.doc.common import *

# Specify the input and output file paths
inputFile = "Sample.docx"
outputFile = "HighlightAllInstances.docx"

# Create a Document object and load the file
document = Document()
document.LoadFromFile(inputFile)

# Find all instances of the target text
textSelections = document.FindAllString("target", False, True)

# Loop through all selections and apply highlighting
for selection in textSelections:
    textRange = selection.GetAsOneRange()
    textRange.CharacterFormat.HighlightColor = Color.get_Yellow()

# Save the modified document
document.SaveToFile(outputFile, FileFormat.Docx2016)
document.Close()
Enter fullscreen mode Exit fullscreen mode

Best Practices

  • Backup your files: Always work on a copy to prevent accidental overwrites.
  • Case sensitivity: The second parameter in FindString and FindAllString controls case matching.
  • Custom formatting: Besides highlight color, you can change font color, bold, or italic to make keywords stand out.
  • Efficient processing: For very large documents, consider only loading necessary sections or using batch scripts to avoid memory issues.

Conclusion

Automating text highlighting in Word documents with Python not only saves time but also ensures consistency and accuracy. Using Spire.Doc, you can efficiently highlight either the first occurrence or all occurrences of a keyword. Combined with alternative approaches and batch processing, these methods scale well for reports, technical documentation, or any Word-based workflows.

By implementing these techniques, developers, technical writers, and QA engineers can streamline document reviews, reduce human error, and build reusable automation scripts for everyday tasks.

Top comments (0)