How to remove the last n occurrences of a substring in a string in Python

1 Answer

0 votes
def remove_last_n_occurrences(s: str, sub: str, n: int) -> str:
    positions = []
    start = 0

    # Find all occurrences
    while True:
        pos = s.find(sub, start)
        if pos == -1:
            break
        positions.append(pos)
        start = pos + len(sub)

    # Remove from the end
    s_list = list(s)
    for pos in reversed(positions):
        if n == 0:
            break
        del s_list[pos:pos + len(sub)]
        n -= 1

    return "".join(s_list)


def remove_extra_spaces(s: str) -> str:
    # Split on any whitespace, rejoin with single spaces
    return " ".join(s.split())


text = "abc xyz xyz abc xyzabcxyz abc"

result = remove_last_n_occurrences(text, "xyz", 3)
print(result)

cleaned = remove_extra_spaces(result)
print(cleaned)



'''
run:

abc xyz  abc abc abc
abc xyz abc abc abc

'''

 



answered Feb 16 by avibootz
edited Feb 16 by avibootz

Related questions

...