はじめに
Python では、ケバブケースの文字列は、各単語がハイフンで区切られた文字列です。たとえば、"hello-world" はケバブケースの文字列です。このチャレンジでは、与えられた文字列をケバブケースに変換する関数を書くことが求められます。
ケバブケースの文字列
to_kebab_case(s) という名前の Python 関数を書きましょう。この関数は文字列 s を入力として受け取り、その文字列をケバブケースのバージョンで返します。関数は次の手順を実行する必要があります。
- 正規表現
r"(_|-)+"を使用して、-または_をすべてスペースに置き換えます。 - 文字列内のすべての単語を一致させ、
str.lower()を使って小文字に変換します。 - すべての単語を
-を区切り文字として結合します。
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'
まとめ
このチャレンジでは、Python で文字列をケバブケースに変換する方法を学びました。re.sub() を使って - または _ をスペースに置き換え、re.sub() を使って文字列内のすべての単語を一致させ、str.lower() を使って小文字に変換し、str.join() を使って - を区切り文字としてすべての単語を結合しました。