text = 'UPPER PYTHON, lower python, Mixed Python'def matchcase(word):def replace(m):text = m.group()if text.isupper():return word.upper()elif text.islower():return word.lower()elif text[0].isupper():return word.capitalize()else:return wordreturn replaceprint(re.sub('python', matchcase('snake'), text, flags=re.I))>>> UPPER SNAKE, lower snake, Mixed Snake
