How to Concatenate Strings in Python
What you’ll build or solve
You’ll combine strings in Python using the most common approaches: +, join(), and f-strings.
When this approach works best
This approach works best when you:
Learn Python on Mimo
- Build user-facing messages, like
"Hello, Mina!"or status updates. - Combine data into a label or key, like
"order-" + order_id. - Generate output from lists, like turning
["a", "b", "c"]into"a,b,c".
Avoid this approach when:
- You are building huge text in a tight loop. Prefer collecting pieces in a list and using
join().
Prerequisites
- Python installed
- You know what a string and a list are
Step-by-step instructions
1) Concatenate with + for simple cases
Use + when you have a few strings to combine.
first="Ada"
last="Lovelace"
full_name=first+" "+last
print(full_name)
If you want to add punctuation or spacing, include it as a string:
message="Hello, "+first+"!"
print(message)
2) Use f-strings for readable formatting
f-strings let you embed values inside a string. This is often the clearest choice for messages.
name="Mina"
score=92
message=f"{name} scored{score} points."
print(message)
What to look for: f-strings convert values to text for you, so you don’t need str(score).
3) Use join() to concatenate many pieces
If you have a list of strings, join() is usually the best option.
words= ["learn","python","today"]
sentence=" ".join(words)
print(sentence)
You can pick any separator:
tags= ["python","data","web"]
csv=",".join(tags)
print(csv)
What to look for: All items must be strings. Convert first if needed.
4) Convert non-strings before concatenating
If you use + with a non-string, Python raises a TypeError. Convert values with str() or switch to an f-string.
count=3
label="items: "+str(count)
print(label)
Using an f-string is often simpler:
count=3
label=f"items:{count}"
print(label)
5) Build text in a loop using a list, then join()
When you concatenate repeatedly in a loop, collect parts first, then join once.
CSS
names= ["Ada","Mina","Sam"]
parts= []
fornameinnames:
parts.append(f"-{name}")
result="\n".join(parts)
print(result)
This stays fast and keeps your code easy to read.
Examples you can copy
Example 1: Build a greeting
first_name="Sam"
greeting="Hi "+first_name+"!"
print(greeting)
Example 2: Create a filename from pieces
user_id=42
date="2026-02-12"
filename=f"user-{user_id}-{date}.txt"
print(filename)
Example 3: Join a list into a comma-separated string
cities= ["Podgorica","Budva","Kotor"]
line=", ".join(cities)
print(line)
Example 4: Join non-strings by converting first
This example uses a generator expression to convert numbers to strings.
numbers= [1,2,3,4]
text=" - ".join(str(n)forninnumbers)
print(text)
Common mistakes and how to fix them
Mistake 1: Concatenating a string with an int
What you might do:
count=5
message="Total: "+count
print(message)
Why it breaks: + only works between strings, not between a string and an integer.
Correct approach: Convert or use an f-string.
count=5
message="Total: "+str(count)
print(message)
count=5
message=f"Total:{count}"
print(message)
Mistake 2: Using join() on a list that contains non-strings
What you might do:
items= ["A",2,"C"]
text=",".join(items)
print(text)
Why it breaks: join() requires every item to be a string.
Correct approach: Convert items first.
items= ["A",2,"C"]
text=",".join(str(x)forxinitems)
print(text)
Troubleshooting
If you see TypeError: can only concatenate str (not "int") to str, do this: convert with str(value) or use an f-string.
If you see TypeError: sequence item 1: expected str instance, do this: convert items before join(), like str(x) for x in items.
If your output has missing spaces, do this: add separators explicitly, like " ", ", ", or "\n".
If concatenation feels slow in a loop, do this: append to a list and call join() once at the end.
If you see extra separators at the end, do this: avoid manual += "," patterns, and use join().
Quick recap
- Use
+to concatenate a few strings. - Use f-strings for readable messages with variables.
- Use
join()to concatenate many strings from a list. - Convert non-strings with
str()or use f-strings. - For loops, collect parts in a list, then call
join()once.
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