Coding Challenge
💬 Question: Given a Python string. How to split the string after the second occurrence of the separator (string or character)? In other words: how to ignore the first separator occurrence when splitting a string?

Here are three examples:
'a-b-c-d-e-f-g-h'
andsep='-'
should be split to['a-b', 'c', 'd', 'e', 'f', 'g', 'h']
'a-b'
andsep='-'
should be split to['a-b']
'helloxxxworldxxxpythonxxxisxxxgreat'
andsep='xxx'
should be split to['helloxxxworld', 'python', 'is', 'great']
Solution
You can split a string after the second occurrence of a given character in three steps:
- First, split the whole string using the separator sep in
s.split(sep)
. - Second, combine the first two elements of the resulting split list using the
sep.join()
method call. - Third, use slicing and list concatenation to create a new result list.
The following code creates a function that takes as input a string s
and a separator string sep
and splits the string at the second occurrence:
def my_split(s, sep): all_split = s.split(sep) return [sep.join(all_split[0:2])] + all_split[2:] print(my_split('a-b-c-d-e-f-g-h', '-')) # ['a-b', 'c', 'd', 'e', 'f', 'g', 'h'] print(my_split('a-b', '-')) # ['a-b'] print(my_split('helloxxxworldxxxpythonxxxisxxxgreat', 'xxx')) # ['helloxxxworld', 'python', 'is', 'great']
The code does multiple things.
First, it creates a list all_split
by splitting the string s
using separator sep
. For example, when using it on string 'a-b-c-d-e-f-g-h'
and sep='-'
, it would return ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
.
👉 Recommended Tutorial: Python String Split
Second, it combines the first two elements using the separator string sep
between them by running sep.join(all_split[0:2])
.
Recommended Tutorials: 👇
- Python String Join for
sep.join(...)
- Python Slicing for
all_split[0:2]
Third, it puts the result into a list using the square bracket notation, i.e., we get a list with one string element ['a-b']
for our example.
👉 Recommended Tutorial: How to Create a Python List?
Fourth, you concatenate this list with the remaining all_split
list, ignoring the first two split results, that are already merged to ignore the first split, by using the slicing expression all_split[2:]
.
In our example, we get ['a-b']
and ['c', 'd', 'e', 'f', 'g', 'h']
that concatenates to ['a-b', 'c', 'd', 'e', 'f', 'g', 'h']
.
👉 Recommended Tutorials: List Concatenation in Python
Thanks for reading this short tutorial. To keep learning, feel free to join my 100% free email academy with cheat sheets and regular learning content!

While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com that has taught exponential skills to millions of coders worldwide. He’s the author of the best-selling programming books Python One-Liners (NoStarch 2020), The Art of Clean Code (NoStarch 2022), and The Book of Dash (NoStarch 2022). Chris also coauthored the Coffee Break Python series of self-published books. He’s a computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.