How to Replace Characters in a String in Python
What you’ll build or solve
You’ll replace characters in a Python string using the two most practical approaches.
When this approach works best
Replacing characters in a string works best when you want to:
Learn Python on Mimo
- Clean input, like turning
/into-in dates or removing separators from IDs. - Normalize text before comparing, like replacing spaces with
_in usernames. - Prepare text for output, like standardizing delimiters before writing files.
This is a bad idea when you need pattern-based rules, like “replace digits only if they appear after a #”. For that, use regular expressions.
Prerequisites
- Python 3 installed
- You know what a string variable is
Step-by-step instructions
1) Replace characters with replace()
Use str.replace(old, new) to replace every occurrence. Add a third argument to limit how many replacements happen.
Option A: Replace all occurrences (most common)
Python
text = "a-b-c"
fixed = text.replace("-", "_")
print(fixed) # a_b_c
Option B: Replace only the first few occurrences
Python
path = "2026/02/18/report"
fixed = path.replace("/", "-", 1)
print(fixed) # 2026-02/18/report
What to look for: replace() returns a new string, so assign the result back to a variable.
Python
name = "ana-maria"
name.replace("-", " ")
print(name) # still "ana-maria"
Correct approach:
Python
name = name.replace("-", " ")
print(name)
2) Replace multiple characters with translate()
If you need to replace several single characters, translate() keeps your code short and readable.
Python
text = "report-2026/02/18:final"
table = str.maketrans({
"-": "_",
"/": "_",
":": "_",
})
fixed = text.translate(table)
print(fixed)
What to look for: translate() works best for single-character replacements. For multi-character swaps like "->" to "→", use replace().
Examples you can copy
Example 1: Convert date separators for filenames
Python
date_str = "2026/02/18"
safe = date_str.replace("/", "-")
print(safe) # 2026-02-18
Example 2: Normalize a username by replacing spaces
Python
username = "Noor Ali"
normalized = username.lower().replace(" ", "_")
print(normalized) # noor_ali
Example 3: Remove common separators from a phone number
Python
phone = "+382 (67) 123-456"
clean = (
phone.replace(" ", "")
.replace("(", "")
.replace(")", "")
.replace("-", "")
.replace("+", "")
)
print(clean)
Example 4: Replace several separators with underscores
Python
name = "a-b/c:d"
table = str.maketrans({"-": "_", "/": "_", ":": "_"})
fixed = name.translate(table)
print(fixed)
Example 5: Replace a multi-character token
Python
expr = "a->b"
fixed = expr.replace("->", "→")
print(fixed)
Common mistakes and how to fix them
Mistake 1: Forgetting to store the returned string
What you might do
Python
text = "a-b"
text.replace("-", "_")
print(text)
Why it breaks
Strings are immutable, so replace() does not modify the original string.
Corrected approach
Python
text = "a-b"
text = text.replace("-", "_")
print(text)
Mistake 2: Using translate() for multi-character replacements
What you might do
Python
text = "a->b"
table = str.maketrans({"->": "→"})
fixed = text.translate(table)
Why it breaks
translate() maps single characters, not multi-character sequences.
Corrected approach
Python
text = "a->b"
fixed = text.replace("->", "→")
print(fixed)
Troubleshooting
If nothing changes, do this:
Assign the result of replace() or translate() to a variable.
If replacements happen too many times, do this:
Use replace(old, new, count) to limit how many replacements happen.
If you need to replace several different single characters, do this:
Use translate() with str.maketrans(...) instead of long replace() chains.
If you need to replace a multi-character token, do this:
Use replace() with the full token, like text.replace("->", "→").
Quick recap
- Use
replace()for simple character swaps. - Add
counttoreplace()to limit replacements. - Use
translate()for many single-character replacements. - Use
replace()for multi-character tokens.
Join 35M+ people learning for free on Mimo
4.8 out of 5 across 1M+ reviews
Check us out on Apple AppStore, Google Play Store, and Trustpilot