How to Split a String in Python
If you want to break text into smaller pieces in Python, use string splitting methods.
This page shows you how to:
- Split a string into a list
- Choose the right separator
- Work with spaces, commas, and line breaks
- Understand what
split()returns
Quick answer
text = "apple,banana,cherry"
parts = text.split(",")
print(parts)
Output:
['apple', 'banana', 'cherry']
Use split() to turn one string into a list of smaller strings.
What this page helps you do
After reading this page, you will be able to:
- Split a string into a list
- Choose the correct separator
- Handle spaces, commas, and new lines
- Understand what
split()returns
Use split() with the default separator
If you call split() with no argument, Python splits the string on whitespace.
Whitespace includes:
- Spaces
- Tabs
- New lines
This is useful when you want to split text into words.
text = "Python is fun"
parts = text.split()
print(parts)
Output:
['Python', 'is', 'fun']
One useful detail is that extra spaces are handled automatically.
text = "Python is fun"
parts = text.split()
print(parts)
Output:
['Python', 'is', 'fun']
So if you want to split by spaces and ignore repeated spaces, split() with no argument is usually the best choice.
If you want a full method reference, see the Python string split() method.
Split using a specific character
You can also pass a separator to split().
Common separators include:
",""-""|"
Split by comma
text = "apple,banana,cherry"
parts = text.split(",")
print(parts)
Output:
['apple', 'banana', 'cherry']
Split by dash
text = "2024-10-31"
parts = text.split("-")
print(parts)
Output:
['2024', '10', '31']
Split by pipe
text = "red|green|blue"
parts = text.split("|")
print(parts)
Output:
['red', 'green', 'blue']
The separator must match the text exactly. If the string uses commas, splitting on ";" will not work.
text = "apple,banana,cherry"
parts = text.split(";")
print(parts)
Output:
['apple,banana,cherry']
Notice that the result is still a list. split() always returns a list of strings.
Limit the number of splits
Sometimes you do not want to split everywhere. In that case, use this form:
text.split(separator, maxsplit)
maxsplit tells Python how many times to split.
text = "name:age:city"
parts = text.split(":", 1)
print(parts)
Output:
['name', 'age:city']
Only the first : is used. The rest of the text stays together in the last item.
This is helpful when only the first part matters.
text = "ERROR - file not found - line 42"
parts = text.split(" - ", 1)
print(parts)
Output:
['ERROR', 'file not found - line 42']
Split lines of text
If your string has multiple lines, use splitlines().
This is often better than splitting on "\n" because it handles line breaks more cleanly.
text = "first line\nsecond line\nthird line"
lines = text.splitlines()
print(lines)
Output:
['first line', 'second line', 'third line']
This is useful for:
- File content
- Copied text
- Multi-line input
Example:
text = """apple
banana
cherry"""
lines = text.splitlines()
print(lines)
Output:
['apple', 'banana', 'cherry']
What to do after splitting
After splitting, you get a list. You can then work with the list in different ways.
Access items with indexes
text = "apple,banana,cherry"
parts = text.split(",")
print(parts[0])
print(parts[1])
Output:
apple
banana
If you are new to this, see Python list indexing explained.
Loop through the list
text = "apple,banana,cherry"
parts = text.split(",")
for item in parts:
print(item)
Output:
apple
banana
cherry
Convert values if needed
Split values start as strings. If you need numbers, convert them.
text = "10,20,30"
parts = text.split(",")
numbers = [int(item) for item in parts]
print(numbers)
Output:
[10, 20, 30]
Remove extra whitespace with strip()
If your text has spaces around commas, those spaces stay in the result.
text = "apple, banana, cherry"
parts = text.split(",")
print(parts)
Output:
['apple', ' banana', ' cherry']
To clean each item, use strip():
text = "apple, banana, cherry"
parts = text.split(",")
clean_parts = [item.strip() for item in parts]
print(clean_parts)
Output:
['apple', 'banana', 'cherry']
You can learn more on the Python string strip() method and how to remove whitespace from a string in Python.
Common mistakes
Here are some common problems beginners run into when splitting strings.
Using the wrong separator character
If the separator does not match the text, Python will not split it.
text = "a,b,c"
parts = text.split(";")
print(parts)
Output:
['a,b,c']
Expecting split() to return a string
split() returns a list, not a single string.
text = "a,b,c"
parts = text.split(",")
print(parts)
print(type(parts))
Output:
['a', 'b', 'c']
<class 'list'>
Forgetting that split(',') does not remove spaces
text = "a, b, c"
parts = text.split(",")
print(parts)
Output:
['a', ' b', ' c']
Use strip() if needed.
Trying to access a list item that does not exist
text = "apple,banana"
parts = text.split(",")
print(parts[2])
This causes an error because there is no third item.
To debug, print the list and check its length first:
text = "apple,banana"
parts = text.split(",")
print(text)
print(parts)
print(type(parts))
print(len(parts))
print(repr(text))
FAQ
What does split() return in Python?
It returns a list of strings.
What is the difference between split() and split(',')?
split() uses whitespace by default. split(',') only splits where there is a comma.
How do I split a string by spaces and ignore extra spaces?
Use split() with no argument.
How do I split text into lines?
Use splitlines().
Why do my split values still have spaces?
Because split(',') separates at commas but does not trim spaces. Use strip() on each item if needed.