import re
def stp(s):
p = re.compile(r'(Иван\b)(?!.?[А-Я]|[-])')
rep = 'Степан'
return p.sub(rep, s)
arr = ["Поди сюда, Иван.", "Иван Грозный", "Город Иваново","Иван, просто Иван",
"Иван-да-Марья", "Петр Иваныч", "Марья, Иван, Пётр", "Иван-дурак"]
print(list(map(lambda x : stp(x), arr)))
aW1wb3J0IHJlCmRlZiBzdHAocyk6CiAgICBwID0gcmUuY29tcGlsZShyJyjQmNCy0LDQvVxiKSg/IS4/W9CQLdCvXXxbLV0pJykKICAgIHJlcCA9ICfQodGC0LXQv9Cw0L0nCiAgICByZXR1cm4gcC5zdWIocmVwLCBzKQphcnIgPSBbItCf0L7QtNC4INGB0Y7QtNCwLCDQmNCy0LDQvS4iLCAi0JjQstCw0L0g0JPRgNC+0LfQvdGL0LkiLCAi0JPQvtGA0L7QtCDQmNCy0LDQvdC+0LLQviIsItCY0LLQsNC9LCDQv9GA0L7RgdGC0L4g0JjQstCw0L0iLAogICAgICAgItCY0LLQsNC9LdC00LAt0JzQsNGA0YzRjyIsICLQn9C10YLRgCDQmNCy0LDQvdGL0YciLCAi0JzQsNGA0YzRjywg0JjQstCw0L0sINCf0ZHRgtGAIiwgItCY0LLQsNC9LdC00YPRgNCw0LoiXQpwcmludChsaXN0KG1hcChsYW1iZGEgeCA6IHN0cCh4KSwgYXJyKSkp
['Поди сюда, Степан.', 'Иван Грозный', 'Город Иваново', 'Степан, просто Степан', 'Иван-да-Марья', 'Петр Иваныч', 'Марья, Степан, Пётр', 'Иван-дурак']