Skip to content
Snippets Groups Projects
string_replacements.py 800 B
Newer Older
from typing import List, Tuple

def replace(original_string: str, replacements: List[Tuple[int, int, str]]):
    """
    Replaces substrings in a string.
    
    Parameters
    ----------
    original_string : str
        The original string.
    replacements : List[Tuple[int, int, str]]
        A list of tuples containing (start, end, replacement).
    
    Returns
    -------
    str
        The string with replacements applied.
    """
    
    replacements = sorted(replacements, key=lambda x: x[0])
    
    delta = 0
    for replacement in replacements:
        original_string = original_string[:replacement[0] + delta] + replacement[2] + original_string[replacement[1] + delta:]
        delta += len(replacement[2]) - (replacement[1] - replacement[0])
        
    return original_string