Преобразование строки в стиле kebab case на Python

Beginner

This tutorial is from open-source community. Access the source code

Введение

В Python строка в стиле kebab case - это строка, в которой каждое слово отделено дефисом. Например, "hello-world" - это строка в стиле kebab case. В этом испытании вам предстоит написать функцию, которая преобразует заданную строку в стиле kebab case.

Строка в стиле kebab case

Напишите функцию на Python под названием to_kebab_case(s), которая принимает на вход строку s и возвращает версию строки в стиле kebab case. Функция должна выполнять следующие шаги:

  1. Замените любые - или _ на пробел, используя регулярное выражение r"(_|-)+".
  2. Найдите все слова в строке и приведите их к нижнему регистру с помощью str.lower().
  3. Объедините все слова, используя - в качестве разделителя.
from re import sub

def kebab(s):
  return '-'.join(
    sub(r"(\s|_|-)+"," ",
    sub(r"[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+",
    lambda mo: ' ' + mo.group(0).lower(), s)).split())
kebab('camelCase') ## 'camel-case'
kebab('some text') ## 'some-text'
kebab('some-mixed_string With spaces_underscores-and-hyphens')
## 'some-mixed-string-with-spaces-underscores-and-hyphens'
kebab('AllThe-small Things') ## 'all-the-small-things'

Резюме

В этом испытании вы узнали, как преобразовать строку в стиле kebab case в Python. Вы использовали re.sub(), чтобы заменить любые - или _ на пробел, re.sub(), чтобы найти все слова в строке, str.lower(), чтобы привести их к нижнему регистру, и str.join(), чтобы объединить все слова, используя - в качестве разделителя.