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.