difflib | Python Standard Library – Real Python
Skip to content

difflib

The Python difflib module provides classes and functions for comparing sequences and generating human-readable difference reports. It implements the Ratcliff-Obershelp “gestalt pattern matching” algorithm for measuring sequence similarity and offers multiple output formats including unified diff, context diff, and HTML side-by-side tables:

Language: Python
>>> import difflib
>>> difflib.get_close_matches("pythn", ["python", "perl", "ruby"])
['python']

Key Features

  • Computes similarity ratios between any two sequences with SequenceMatcher
  • Generates unified diff output suitable for patch files with unified_diff()
  • Produces human-readable line-by-line deltas with Differ and ndiff()
  • Creates HTML tables for side-by-side comparison with HtmlDiff
  • Finds the closest matches for a string from a list with get_close_matches()
  • SequenceMatcher works on any hashable sequence type, not only lines of text

Frequently Used Classes and Functions

Examples

Computing the similarity ratio between two strings:

Language: Python
>>> import difflib
>>> sm = difflib.SequenceMatcher(None, "python", "pythoon")
>>> sm.ratio()
0.9230769230769231

Generating a unified diff between two lists of lines:

Language: Python
>>> import difflib
>>> before = ["one", "two", "three"]
>>> after = ["one", "TWO", "three", "four"]
>>> for line in difflib.unified_diff(before, after, lineterm=""):
...     print(line)
---
+++
@@ -1,3 +1,4 @@
 one
-two
+TWO
 three
+four

Common Use Cases

The most common tasks for difflib include:

  • Comparing two versions of a text file and reporting what changed
  • Implementing fuzzy search or autocomplete by finding closest string matches
  • Generating patch files or diff reports for version control workflows
  • Displaying test failure details by comparing expected and actual output
  • Building merge tools or change-tracking features in text editors

Real-World Example

A script can compare two versions of a configuration file and print a unified diff showing exactly what changed between them:

Language: Python Filename: compare_configs.py
import difflib

v1 = """\
[server]
host = localhost
port = 8080
debug = true
""".splitlines(keepends=True)

v2 = """\
[server]
host = 0.0.0.0
port = 443
debug = false
workers = 4
""".splitlines(keepends=True)

diff = difflib.unified_diff(
    v1, v2, fromfile="config_v1.ini", tofile="config_v2.ini"
)
print("".join(diff), end="")

Run the script from your command line. You’ll get an ouput like the following:

Language: File Changes (diff)
--- config_v1.ini
+++ config_v2.ini
@@ -1,4 +1,5 @@
 [server]
-host = localhost
-port = 8080
-debug = true
+host = 0.0.0.0
+port = 443
+debug = false
+workers = 4

The output follows the standard unified diff format, making it directly usable as a patch file or for display in code review tools.

Tutorial

Reading and Writing Files in Python (Guide)

In this tutorial, you'll learn about reading and writing files in Python. You'll cover everything from what a file is made up of to which libraries can help you along that way. You'll also take a look at some basic scenarios of file usage as well as some advanced techniques.

intermediate python

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated April 2, 2026