Преобразование camel case в kebab case

Программа ставит перед большими буквами тире, это сделано, но интересует как вписать игнорирование попадающихся цифр в передаваемой строке.

def change_case(kebabize):
    new = [kebabize[0].lower()]
    for c in kebabize[1:]:
        if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
            new.append('-')
            new.append(c.lower())
        else:
            new.append(c)
    kebabize = ''.join(new)
    return kebabize
print(change_case('myCamelHas3Humps')) # получается my-camel-has3-humps
# а мне надо чтоб было my-camel-has-humps т.е. чтоб программа игнорировала цифры и не писала их

Ответы (3 шт):

Автор решения: strawdog

Например, так:

a = "myCamelHas3Humps"

res = ''.join([f"-{x.lower()}" if x!= x.lower() else x for x in [y for y in a if y.upper() in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ']])

res:

'my-camel-has-humps'
→ Ссылка
Автор решения: imitusov

Можно добавить доп. проверку на то, что символ строки является цифрой, при помощи метода .isdigit()

def change_case(kebabize):
    new = []
    for c in kebabize:
        if c.isdigit(): # проеверка на цифру, если да, то пропускаем
            continue
        elif c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
            new.append('-')
            new.append(c.lower())
        else:
            new.append(c)
    kebabize = ''.join(new)
    return kebabize
print(change_case('myCamelHas3Humps')) 
→ Ссылка
Автор решения: Prospero2005

Скомпоновал из предложенного выше:

def change_case(kebabize):
    new = [kebabize[0].lower() if kebabize[0].isalpha() else '']
    for c in kebabize[1:]:
        if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
            new.append('-')
            new.append(c.lower())
        elif c.isalpha():
            new.append(c)
    kebabize = ''.join(new)
    return kebabize
print(change_case('1myCamelHas3Humps'))  # my-camel-has-humps
print(change_case('MyCamelHas3Humps'))  # my-camel-has-humps
print(change_case('myCamelHas3Humps123'))  # my-camel-has-humps
print(change_case('myCamelHas3Humps'))  # my-camel-has-humps
→ Ссылка