python:SomeStingLikeThis to some_string_like_this

lan*_*ng2 1 python

我正在寻找一种在python中转换命名约定的解决方案.例如SomeStringLikeThis的输入将给出some_string_like_this的输出.

是否有一种pythonic方式来实现上述目标?我期待来自python guru的一些神奇的答案.:)

Dav*_*son 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
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为re.findall('[A-Z][^A-Z]*', s)将字符串拆分为单独的大写单词(如此处所述):

re.findall('[A-Z][^A-Z]*', s)
# ['Some', 'String', 'Like', 'This']
Run Code Online (Sandbox Code Playgroud)

"_".join_字符连接列表,所以

"_".join(re.findall('[A-Z][^A-Z]*', s))
# Some_String_Like_This
Run Code Online (Sandbox Code Playgroud)

并且.lower()使一个字符串小写.