首页 > 解决方案 > 获取字符串的子字符串

问题描述

例如:字符串 = 'AbcDEfGhIJK'

我想获取一个列表: ['A','bc','DE','f','G','h','IJK']

我正在尝试考虑这样做的逻辑,但到目前为止还没有运气。

编辑:我不知道正则表达式,所以我只是使用循环这就是我想出的,虽然它没有给出最后一个'IJK'

u_count = 0 
l_count = 0 
l_string = '' 
u_string = '' 
output = []

data = 'AbcDEfGhIJK'

for c in data:
 if(c.isupper()):
    if(l_count !=0):
        output.append(l_string)
        l_count = 0
        l_string = ''
    u_string += c
    u_count += 1

 if(c.islower()):
    if(u_count !=0):
        output.append(u_string)
        u_count = 0
        u_string = ''
    l_string +=c
    l_count += 1
print(output)

标签: pythonpython-3.x

解决方案


您可以使用itertools.groupby来做到这一点:

from itertools import groupby

string = 'AbcDEfGhIJK'
out = [''.join(group) for key, group in groupby(string, key=lambda c: c.islower())]
print(out)
# ['A', 'bc', 'DE', 'f', 'G', 'h', 'IJK']

在这里,groupby将对给出相同输出的字符进行分组islower()


推荐阅读