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 回答