Я думаю, что регулярные выражения - это то, что нужно, но просто для того, чтобы дать чистую версию на Python без (надеюсь) проблем, на которые указал ΤΖΩΤΖΙΟΥ:
def splitCaps(s):
result = []
for ch, next in window(s+" ", 2):
result.append(ch)
if next.isupper() and not ch.isspace():
result.append(' ')
return ''.join(result)
window () - это служебная функция, которую я использую для работы со скользящим окном элементов, определяемой как:
import collections, itertools
def window(it, winsize, step=1):
it=iter(it) # Ensure we have an iterator
l=collections.deque(itertools.islice(it, winsize))
while 1: # Continue till StopIteration gets raised.
yield tuple(l)
for i in range(step):
l.append(it.next())
l.popleft()