import re from copy import deepcopy class FindAndReplace: def __init__(self, map: dict[str, list[str]], reqire_full_match: bool = False): self.map = map self.require_full_match = reqire_full_match def execute_on_cell(self, entry) -> str: res = deepcopy(entry.value) for species, alternatives in self.map.items(): for old_version in alternatives: if self.require_full_match and old_version == res: # Todo remove random leading/trailing spaces before if res = species elif not self.require_full_match: res = res.replace(old_version, species) return res