如何在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']