# Python convertir un string en CamelCase a kebab-case (separados por guiones)
# http://es.stackoverflow.com/a/61561/127
import re
pascal = re.compile(r"[A-Z]\d*(?:[A-Z\d]*(?=[A-Z]|$)|[a-z])")
def pascal_kebab(cadena):
return pascal.sub(lambda m: ("-" if m.start() else "") + m.group().lower(), cadena)
pruebas = [
'VerHTMLDePag',
'Ver2HTMLDePag',
'Ver2HTMLPag2Info',
'HTMLFomatoPag',
'HTMLConXML',
'HTML5FomatoPag',
'HTML5ConXML',
'HTML5ConCSS3',
'HTML',
'VerQ',
'A2BFormato',
'Formato',
'SFormato'
]
for prueba in pruebas:
print("%-16s => %s" % (prueba, pascal_kebab(prueba)))
IyBQeXRob24gY29udmVydGlyIHVuIHN0cmluZyBlbiBDYW1lbENhc2UgYSBrZWJhYi1jYXNlIChzZXBhcmFkb3MgcG9yIGd1aW9uZXMpCiMgaHR0cDovL2VzLnN0YWNrb3ZlcmZsb3cuY29tL2EvNjE1NjEvMTI3CgppbXBvcnQgcmUKCnBhc2NhbCA9IHJlLmNvbXBpbGUociJbQS1aXVxkKig/OltBLVpcZF0qKD89W0EtWl18JCl8W2Etel0pIikKCmRlZiBwYXNjYWxfa2ViYWIoY2FkZW5hKToKICAgIHJldHVybiBwYXNjYWwuc3ViKGxhbWJkYSBtOiAoIi0iIGlmIG0uc3RhcnQoKSBlbHNlICIiKSArIG0uZ3JvdXAoKS5sb3dlcigpLCBjYWRlbmEpCgoKCnBydWViYXMgPSBbCiAgICAgICAgICAgICdWZXJIVE1MRGVQYWcnLAogICAgICAgICAgICAnVmVyMkhUTUxEZVBhZycsCiAgICAgICAgICAgICdWZXIySFRNTFBhZzJJbmZvJywKICAgICAgICAgICAgJ0hUTUxGb21hdG9QYWcnLAogICAgICAgICAgICAnSFRNTENvblhNTCcsCiAgICAgICAgICAgICdIVE1MNUZvbWF0b1BhZycsCiAgICAgICAgICAgICdIVE1MNUNvblhNTCcsCiAgICAgICAgICAgICdIVE1MNUNvbkNTUzMnLAogICAgICAgICAgICAnSFRNTCcsCiAgICAgICAgICAgICdWZXJRJywKICAgICAgICAgICAgJ0EyQkZvcm1hdG8nLAogICAgICAgICAgICAnRm9ybWF0bycsCiAgICAgICAgICAgICdTRm9ybWF0bycKICAgICAgICAgIF0KCmZvciBwcnVlYmEgaW4gcHJ1ZWJhczoKICAgIHByaW50KCIlLTE2cyA9PiAlcyIgJSAocHJ1ZWJhLCBwYXNjYWxfa2ViYWIocHJ1ZWJhKSkpICAgIA==