How to Format a Group of Numbers with Dots in Python using re.sub

What will you learn?

In this comprehensive guide, you will learn how to utilize the re.sub function in Python to format groups of numbers by inserting dots between them.

Introduction to the Problem and Solution

When dealing with string manipulation in Python, there are frequent scenarios where we need to apply regular expressions to modify content. One common requirement is formatting groups of numbers by adding dots between them. This task can be efficiently accomplished using the re.sub function from the re module in Python.

The solution involves defining a pattern that identifies groups of numbers and then replacing them with the same group followed by a dot. By following this approach, we can easily format numerical data based on our specifications.


import re

# Input string containing groups of numbers
input_string = "123456789"

# Insert a dot after each group of 3 digits using re.sub
formatted_string = re.sub(r"(\d{3})", r"\1.", input_string)

print(formatted_string)  # Output: 123.456.789

# Copyright PHD


In the provided code: – We import the re module for handling regular expressions. – Define an input string consisting of consecutive numbers. – The re.sub function is utilized with three arguments: – The pattern \d{3} matches exactly three consecutive digits. – The replacement \1. inserts a dot after each matched group of three digits. – The formatted result is stored in formatted_string, reflecting the desired number formatting.

This method demonstrates how regular expressions and substitution patterns can be effectively used to manipulate text data as needed.

  1. How does \d{3} operate?

  2. The regex pattern \d{3} matches precisely three consecutive digits within a string.

  3. Can I customize the number of digits before inserting a dot?

  4. Certainly! You can adjust {3} within the regex pattern to match any desired count of consecutive digits before adding a dot.

  5. What if my input string contains non-digit characters along with numbers?

  6. Additional regex logic or preprocessing might be necessary based on specific requirements before applying this solution directly.

  7. Does this method alter the original input string?

  8. No, unless explicitly reassigned, re.sub generates a new modified string while preserving the original input intact.

  9. Can similar techniques be applied for different grouping patterns like pairs or quadruples?

  10. Absolutely! You can modify the regex pattern accordingly (e.g., change {3} to {2} for pairs or {4} for quadruples).

  11. Is there an alternative approach without utilizing regex?

  12. While feasible through manual iteration and slicing methods, leveraging regex offers cleaner and more efficient solutions for such tasks.


Mastering regular expressions equips you with powerful tools for text processing tasks in Python. Understanding functions like re.sub enables efficient transformation of textual data according to various patterns and formats as required.

Leave a Comment