如何在python中使用大写字母拆分字符串,而不使用前面的空格

如何在python中使用大写字母拆分字符串,而不使用前面的空格,python,split,re,Python,Split,Re,我将根据大写字母拆分一个列表,但包含空格的列表: list = ['Blue Jackets', 'KingsDucks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'RangersIslandersDevils'] 我希望它能给我这个: out =['Blue Jackets', 'Kings','Ducks', 'Senators', 'Oilers', 'Jets', 'Golden Knights',

我将根据大写字母拆分一个列表,但包含空格的列表:

list = ['Blue Jackets', 'KingsDucks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'RangersIslandersDevils']
我希望它能给我这个:

out =['Blue Jackets', 'Kings','Ducks', 'Senators', 'Oilers', 'Jets',
'Golden Knights', 'Hurricanes',
'Rangers', 'Islanders', 'Devils']
我使用了re:

for team in list:
    separated=re.findall('[A-Z][^A-Z]*', team)

但它似乎不准确,因为它将例如“Blue Jackes”拆分为“Blue”和“Jackes”,这对我来说不合适

对于正则表达式,使用(假设列表中的名称超过1个字符(:


^\s?
可以匹配空格,但使用
拆分

import re
a = ['Blue Jackets', 'KingsDucks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'RangersIslandersDevils']

b = []
for i in a:
    # or add other condition or split the string and re.findall again
    if " " in i:
        b.append(i)
        # c = i.split(" ")
        # for j in c:
        #     b.extend(re.findall('[A-Z][^A-Z]*', j))
    else:
        b.extend(re.findall('[A-Z][^A-Z]*', i))

print(b)
>>> ['Blue Jackets', 'Kings', 'Ducks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'Rangers', 'Islanders', 'Devils']


谢谢,这很有效。但是如何拆分另一个像“Blue JacketsRangers”这样的实例呢?@bijanseadghat就像评论一样
import re
a = ['Blue Jackets', 'KingsDucks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'RangersIslandersDevils']

b = []
for i in a:
    # or add other condition or split the string and re.findall again
    if " " in i:
        b.append(i)
        # c = i.split(" ")
        # for j in c:
        #     b.extend(re.findall('[A-Z][^A-Z]*', j))
    else:
        b.extend(re.findall('[A-Z][^A-Z]*', i))

print(b)
>>> ['Blue Jackets', 'Kings', 'Ducks', 'Senators', 'Oilers', 'Jets', 'Golden Knights', 'Hurricanes', 'Rangers', 'Islanders', 'Devils']