Python - Split nth occurence of a character in string
A python idiom for iterating over a sequence in groups it to use zip() like so:

group_iter = zip(*[iter(seq)]*n)


where seq is the sequence and n is the size of each group. Note that the last group will be dropped if it doesn't have n elements.

Using that idiom, your function could be coded:

def nthofchar(string: str, char: str, n: int = 2) -&gt; list:
    chunks = string.split(char)
    groups = zip(*[iter(chunks)]*n)

    return [char.join(group) for group in groups]


Added a test case for n != 2:

print(nthofchar("1;a;b;2;c;d;3;e;f;4;g;h;5;i;j;6;k;l", ";", 3))
# Output: ['1;a;b', '2;c;d', '3;e;f', '4;g;h', '5;i;j', '6;k;l']