2017-08-02 92 views
0

到snake_case下面的代码转换大小写混合蛇情况:转换首字母大写缩写在python

def convertToSnakeCase(name): 
     s1 = re.sub('(.^_)([A-Z][a-z]+)', r'\1_\2', name) 
     return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() 

我怎么会去转换,在那里我有3个连续的大写字母像ISM但分裂它像is_my:

ThisISMyTest --------------> This_is_my_test

+0

什么连续四个盖帽?那么期望的输出是什么?五点怎么样? – NPE

+0

@NPE它取决于大小的首字母缩写。我不确定是否可以这样做,因为没有办法告诉python缩写词的大小 –

+0

_ThisISMyTest_不是骆驼大小写,是吗? – DyZ

回答

0

不同的方式一点点,并适用于大部分。我没有看到你如何避免ISThisISMyTest因为一个程序如果不进入自然语言处理,真的不知道什么是单词。

def convertToSnakeCase(name): 
    split_name = list(name) 
    for c in range(len(split_name)): 
    if split_name[c].isupper() and c != 0 and split_name[c-1] != '_': 
     split_name.insert(c,'_') 
     c +=1 

    return ''.join(split_name).lower() 

print(convertToSnakeCase("ThisISMyTest")) 

this_i_s_my_test

+0

同意。不知道是否可以完成。但是,谢谢! –