1

Python で命名規則を変換するソリューションを探しています。たとえば、SomeStringLikeThis を入力すると、some_string_like_this が出力されます。

上記を達成するためのpythonicな方法はありますか?ここで、Pythonの第一人者からの魔法のような答えを期待しています。:)

4

1 に答える 1

6

これを行うことができます

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()文字列を小文字にします。

于 2013-09-01T14:19:16.860 に答える