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]))