This is more of a challenge for regular expressions:
result = re.sub(r'[a-z]([A-Z])', r'-\1', inputstring).lower()
Demo:
>>> import re
>>> inputstring = 'YannickMorin'
>>> re.sub(r'[a-z]([A-Z])', r'-\1', inputstring).lower()
'yannic-morin'
source
share