How to Join Strings in Python
If you want to combine text in Python, there are a few simple ways to do it.
On this page, you will learn:
- How to join two or more strings into one string
- How to add separators like spaces, commas, or dashes
- When to use
+,str.join(), or f-strings - How to avoid common string joining errors
Quick answer
words = ["Python", "is", "fun"]
result = " ".join(words)
print(result)
Output:
Python is fun
Use str.join() when you want to combine many strings with a separator like a space, comma, or dash.
What this page helps you do
- Join two or more strings into one string
- Add a separator such as a space, comma, or dash
- Choose the right method for simple and larger cases
- Avoid common string joining errors
Use + to join a small number of strings
The + operator is the simplest way to join strings.
It is best when:
- You are joining just two or three strings
- You want to learn the basic idea first
- You do not mind adding separators yourself
Example: join two strings
first = "Hello"
second = "World"
result = first + second
print(result)
Output:
HelloWorld
There is no space between the words because + only combines the exact strings you give it.
Example: add a space yourself
first = "Hello"
second = "World"
result = first + " " + second
print(result)
Output:
Hello World
Important rule
Both sides of + must be strings.
This works:
name = "Sam"
message = "Hello " + name
print(message)
This does not work:
age = 25
message = "Age: " + age
print(message)
That raises a TypeError because Python cannot add a string and an integer directly.
To fix it, convert the number first with str():
age = 25
message = "Age: " + str(age)
print(message)
Use str.join() to join many strings
Use str.join() when you already have a list or tuple of strings.
This is the most common and useful way to join many strings.
Basic pattern
separator.join(items)
separatoris the text you want between each itemitemsis a list or tuple of strings- The result is one new string
Example: join with spaces
words = ["Python", "is", "fun"]
result = " ".join(words)
print(result)
Output:
Python is fun
Example: join with commas
items = ["apple", "banana", "orange"]
result = ", ".join(items)
print(result)
Output:
apple, banana, orange
Example: join with dashes
parts = ["2026", "04", "22"]
result = "-".join(parts)
print(result)
Output:
2026-04-22
Important rule
All items must be strings.
This works:
items = ["a", "b", "c"]
print(", ".join(items))
This does not work:
items = ["a", 2, "c"]
print(", ".join(items))
If your list contains numbers, convert them first:
numbers = [1, 2, 3]
result = ", ".join([str(n) for n in numbers])
print(result)
Output:
1, 2, 3
If you need help with this error, see how to fix TypeError: sequence item 0: expected str instance.
How separators work
The separator is the string before .join().
Python places that separator between items, not after the last item.
Space separator
items = ["red", "green", "blue"]
print(" ".join(items))
Output:
red green blue
Comma and space separator
items = ["red", "green", "blue"]
print(", ".join(items))
Output:
red, green, blue
No separator
items = ["P", "y", "t", "h", "o", "n"]
print("".join(items))
Output:
Python
No extra separator at the end
items = ["a", "b", "c"]
print("-".join(items))
Output:
a-b-c
Notice that the result is a-b-c, not a-b-c-.
When to use f-strings instead
Use f-strings when you want to build a sentence with variables.
They are often easier to read than many + operators, especially when mixing text and numbers.
Example: using +
name = "Maya"
score = 95
message = "Student: " + name + ", Score: " + str(score)
print(message)
Example: using an f-string
name = "Maya"
score = 95
message = f"Student: {name}, Score: {score}"
print(message)
Output:
Student: Maya, Score: 95
F-strings are a good choice for formatted output and readable sentences.
If you want to learn more, see how to format strings in Python.
Common errors when joining strings
Here are some common mistakes beginners run into.
1. join() gets non-string items
Problem:
items = ["a", 1, "b"]
print(", ".join(items))
Why it happens:
join()only accepts strings- The integer
1is not a string
Fix:
items = ["a", 1, "b"]
print(", ".join([str(item) for item in items]))
2. Using + with a string and integer
Problem:
count = 3
message = "Count: " + count
print(message)
Fix:
count = 3
message = "Count: " + str(count)
print(message)
3. Forgetting separators
Problem:
first = "Python"
second = "Beginner"
print(first + second)
Output:
PythonBeginner
Fix:
print(first + " " + second)
4. Calling join() on the wrong thing
This is a very common mistake:
items = ["a", "b", "c"]
print(items.join(", "))
This does not work because join() is a string method.
Correct version:
items = ["a", "b", "c"]
print(", ".join(items))
Simple rule for beginners
A good rule is:
- Use
+for very small string combinations - Use
join()for lists of strings - Use f-strings when inserting variables into text
- Convert numbers first when needed
If you remember just one thing, remember this:
+is fine for a few stringsjoin()is best for many strings in a list
Common mistakes
These are the most common causes of string joining problems:
- Trying to join a list that contains integers or other non-string values
- Using
+with a string and an integer - Writing
items.join(",")instead of",".join(items) - Expecting
join()to add a separator at the end
If your code is not working, these quick checks can help:
print(type(value))
print(items)
print([type(item) for item in items])
print(', '.join([str(item) for item in items]))
What these help you check:
print(type(value))shows what type a variable really isprint(items)shows the actual list contentsprint([type(item) for item in items])helps you find non-string itemsprint(', '.join([str(item) for item in items]))tests a safe conversion to strings
FAQ
How do I join a list of strings in Python?
Use string.join(), such as:
my_list = ["Learn", "Python"]
print(" ".join(my_list))
What is the difference between + and join()?
+ is fine for a small number of strings.
join() is better when you want to combine many strings from a list or tuple.
Why does join() give a TypeError?
join() only works with strings. Convert numbers or other values first using str().
How do I join strings without spaces?
Use an empty separator:
items = ["a", "b", "c"]
print("".join(items))
Can I join numbers with join()?
Not directly. Convert them first:
numbers = [1, 2, 3]
print(", ".join([str(n) for n in numbers]))