Solution preview: call str.split()
to break a string into a list of substrings. By default it splits on any whitespace; pass a delimiter or maxsplit
for finer control. See the official API for str.split
in the Python docs: docs.python.org.
Method 1: Split on whitespace with str.split()
Step 1: Call s.split()
to split on any whitespace (spaces, tabs, newlines).
s = "Python makes text processing easier"
parts = s.split()
print(parts) # ['Python', 'makes', 'text', 'processing', 'easier']
Step 2: Store the result in a new variable because strings are immutable.
words = s.split()
Step 3: Index or iterate over the resulting list to use the tokens.
first = words[0]
for w in words:
print(w)
Method 2: Split with a specific delimiter using sep
Step 1: Pass the delimiter to split
to separate on that exact sequence.
csv = "Alice,Bob,Charlie"
names = csv.split(",")
print(names) # ['Alice', 'Bob', 'Charlie']
Step 2: Use a tab delimiter to avoid breaking multi-word fields.
tsv = "2\tapple juice\t2.00"
fields = tsv.split("\t")
print(fields) # ['2', 'apple juice', '2.00']
Method 3: Limit the number of splits with maxsplit
Step 1: Provide maxsplit
to stop after N splits and keep the remainder as one element.
log = "2025-01-15 08:45:23 INFO User logged in"
date, time, level, message = log.split(maxsplit=3)
print(date, time, level, message)
Step 2: When not passing a delimiter, use a keyword argument for maxsplit
.
"A B C".split(maxsplit=1) # ['A', 'B C']
Method 4: Split from the right with str.rsplit()
Step 1: Call rsplit
with a delimiter and maxsplit
to capture the tail section reliably.
path = "/home/user/docs/tax.txt"
directory, filename = path.rsplit("/", maxsplit=1)
print(directory) # /home/user/docs
print(filename) # tax.txt
Step 2: Prefer rsplit
when you care about the last fields (e.g., filenames) because it avoids empty leading tokens when the string starts with a separator.
Method 5: Split into two parts at the first occurrence using partition()
Step 1: Use partition
to split once and get a 3-tuple: head, separator, tail.
s = "abcd qwrre qwedsasd zxcwsacds"
head, sep, tail = s.partition(" ")
print(head) # abcd
print(tail) # qwrre qwedsasd zxcwsacds
Step 2: Prefer partition
over split(maxsplit=1)
if you also need to know whether the separator was found because it always returns a 3-tuple.
Method 6: Split by lines with str.splitlines()
Step 1: Call splitlines()
to break a multiline string on line boundaries without leaving a trailing empty element.
text = "Hello\nHow are you?\n"
lines = text.splitlines()
print(lines) # ['Hello', 'How are you?']
Step 2: Set keepends=True
to retain newline characters.
text.splitlines(keepends=True) # ['Hello\n', 'How are you?\n']
Review the official reference for str.splitlines
: docs.python.org.
Method 7: Split with regular expressions using re.split()
Step 1: Import re
and define a pattern covering multiple delimiters or complex rules.
import re
data = "Apple:Orange|Lemon-Date"
parts = re.split(r"[:|-]", data)
print(parts) # ['Apple', 'Orange', 'Lemon', 'Date']
Step 2: Use groups and quantifiers to handle repeated or mixed delimiters and optional whitespace.
messy = "Apple :::::3:Orange | 2|||Lemon --1 AND Date :: 10"
pattern = r"\s*(?:[:|\-]+|AND)\s*"
print(re.split(pattern, messy))
# ['Apple', '3', 'Orange', '2', 'Lemon', '1', 'Date', '10']
See the official re.split
entry: docs.python.org.
Method 8: Split into characters
Step 1: Convert the string to a list to get individual characters.
chars = list("foobar")
print(chars) # ['f', 'o', 'o', 'b', 'a', 'r']
Method 9: Split many strings and collect all words
Step 1: Loop over lines and extend a single list with each line’s split()
result to avoid a list of lists.
book_lines = ["the history of", "australian exploration from 1788 to 1888"]
words = []
for line in book_lines:
words.extend(line.split())
print(words)
# ['the', 'history', 'of', 'australian', 'exploration', 'from', '1788', 'to', '1888']
Step 2: Use a comprehension for a concise, single-list result.
words = [w for line in book_lines for w in line.split()]
Common pitfalls and quick tips
split()
returns a new list; it does not modify the original string.- Assign the result:
tokens = s.split()
. - Use
split("\t")
for TSV-style input to keep multi-word fields intact. - Prefer
partition()
orsplit(maxsplit=1)
when you only need the first split. - Choose
rsplit()
for extracting trailing components like filenames. - Use
splitlines()
for line processing instead of splitting on"\n"
.
With these patterns you can reliably slice strings for logs, CSV/TSV-like data, multiline text, or character-level tasks while keeping your code clean and predictable.
Member discussion