s = 'The wolf ate the chicken and ate the rooster'
re.sub('wolf.*?chicken|\\bate\\b', lambda m: 'drank' if m.group() == 'ate' else
    m.group(), s)
Python Regex - replace a string not located between two specific words