2017-08-02 95 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

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