Python で命名規則を変換するソリューションを探しています。たとえば、SomeStringLikeThis を入力すると、some_string_like_this が出力されます。
上記を達成するためのpythonicな方法はありますか?ここで、Pythonの第一人者からの魔法のような答えを期待しています。:)
Python で命名規則を変換するソリューションを探しています。たとえば、SomeStringLikeThis を入力すると、some_string_like_this が出力されます。
上記を達成するためのpythonicな方法はありますか?ここで、Pythonの第一人者からの魔法のような答えを期待しています。:)
これを行うことができます
import re
def split_caps(s):
return "_".join(re.findall('[A-Z][^A-Z]*', s)).lower()
print split_caps("SomeStringLikeThis")
# some_string_like_this
これre.findall('[A-Z][^A-Z]*', s)
は、文字列を個別の大文字の単語に分割するため機能します (ここで説明されているように):
re.findall('[A-Z][^A-Z]*', s)
# ['Some', 'String', 'Like', 'This']
"_".join
_
文字でリストを結合するので、
"_".join(re.findall('[A-Z][^A-Z]*', s))
# Some_String_Like_This
.lower()
文字列を小文字にします。