📜  Python|将 CamelCase字符串拆分为单个字符串

📅  最后修改于: 2022-05-13 01:55:23.929000             🧑  作者: Mango

Python|将 CamelCase字符串拆分为单个字符串

给定一个驼峰式字符串,编写一个Python程序将驼峰式字符串中的每个单词拆分为单独的字符串。

例子:

Input : "GeeksForGeeks"
Output : ['Geeks', 'For', 'Geeks']

Input : "ThisIsInCamelCase"
Output : ['This', 'Is', 'In', 'Camel', 'Case']


方法#1:朴素的方法

将 CamelCase字符串拆分为单个字符串的天真或暴力方法是使用for循环。首先,使用一个空列表 'words' 并附加 'str' 的第一个字母。现在使用for循环,检查当前字母是否为小写,如果是,则将其附加到当前字符串,否则,如果大写,则开始一个新的单个字符串。

# Python3 program Split camel case 
# string to individual strings
  
def camel_case_split(str):
    words = [[str[0]]]
  
    for c in str[1:]:
        if words[-1][-1].islower() and c.isupper():
            words.append(list(c))
        else:
            words[-1].append(c)
  
    return [''.join(word) for word in words]
      
# Driver code
str = "GeeksForGeeks"
print(camel_case_split(str))
输出:
['Geeks', 'For', 'Geeks']


方法 #2:使用enumeratezip()

在这个方法中,我们首先使用Python枚举来查找索引,新字符串从哪里开始,并将它们保存在 'start_idx' 中。最后使用 'start_idx' 我们使用Python zip返回每个单独的字符串。

# Python3 program Split camel case 
# string to individual strings
  
import re
  
def camel_case_split(str):
      
    start_idx = [i for i, e in enumerate(str)
                 if e.isupper()] + [len(str)]
  
    start_idx = [0] + start_idx
    return [str[x: y] for x, y in zip(start_idx, start_idx[1:])] 
      
      
# Driver code
str = "GeeksForGeeks"
print(camel_case_split(str))
输出:
['', 'Geeks', 'For', 'Geeks']


方法 #3:使用Python正则表达式

# Python3 program Split camel case 
# string to individual strings
import re
  
def camel_case_split(str):
  
    return re.findall(r'[A-Z](?:[a-z]+|[A-Z]*(?=[A-Z]|$))', str)
      
# Driver code
str = "GeeksForGeeks"
print(camel_case_split(str))
输出:
['Geeks', 'For', 'Geeks']