Federico A. Ramponi Federico A. Ramponi - 3 years ago 514
Python Question

Python: Split a string at uppercase letters

What is the pythonic way to split a string before the occurrences of a given set of characters?

For example, I want to split

'TheLongAndWindingRoad'

at any occurrence of an uppercase letter (possibly except the first), and obtain
['The', 'Long', 'And', 'Winding', 'Road']
.

Edit: It should also split single occurrences, i.e.
from
'ABC'
I'd like to obtain
['A', 'B', 'C']
.

Answer Source

Unfortunately it's not possible to split on a zero-width match in Python. But you can use re.findall instead:

>>> import re
>>> re.findall('[A-Z][^A-Z]*', 'TheLongAndWindingRoad')
['The', 'Long', 'And', 'Winding', 'Road']
>>> re.findall('[A-Z][^A-Z]*', 'ABC')
['A', 'B', 'C']
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download