Ersetzen Sie jeden Großbuchstaben 'L' in der angegebenen durch ein Leerzeichen plus den Buchstaben "L". Wir können dies mithilfe des Listenverständnisses tun oder eine Funktion definieren, um dies wie folgt zu tun.
s = 'TheLongANDWindingRoad ABC A123B45'
''.join([char if (char.islower() or not char.isalpha()) else ' '+char for char in list(s)]).strip().split()
>>> ['The', 'Long', 'A', 'N', 'D', 'Winding', 'Road', 'A', 'B', 'C', 'A123', 'B45']
Wenn Sie sich für eine Funktion entscheiden, gehen Sie wie folgt vor.
def splitAtUpperCase(text):
result = ""
for char in text:
if char.isupper():
result += " " + char
else:
result += char
return result.split()
Im Fall des angegebenen Beispiels:
print(splitAtUpperCase('TheLongAndWindingRoad'))
>>>['The', 'Long', 'A', 'N', 'D', 'Winding', 'Road']
Die meiste Zeit, in der wir einen Satz in Großbuchstaben aufteilen, ist es jedoch normalerweise so, dass wir Abkürzungen beibehalten möchten, die normalerweise ein kontinuierlicher Strom von Großbuchstaben sind. Der folgende Code würde helfen.
def splitAtUpperCase(s):
for i in range(len(s)-1)[::-1]:
if s[i].isupper() and s[i+1].islower():
s = s[:i]+' '+s[i:]
if s[i].isupper() and s[i-1].islower():
s = s[:i]+' '+s[i:]
return s.split()
splitAtUpperCase('TheLongANDWindingRoad')
>>> ['The', 'Long', 'AND', 'Winding', 'Road']
Vielen Dank.