Ganti setiap huruf besar 'L' yang diberikan dengan spasi kosong ditambah huruf "L". Kita dapat melakukan ini dengan menggunakan pemahaman daftar atau kita dapat mendefinisikan fungsi untuk melakukannya sebagai berikut.
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']
Jika Anda memilih menggunakan suatu fungsi, berikut caranya.
def splitAtUpperCase(text):
result = ""
for char in text:
if char.isupper():
result += " " + char
else:
result += char
return result.split()
Dalam kasus contoh yang diberikan:
print(splitAtUpperCase('TheLongAndWindingRoad'))
>>>['The', 'Long', 'A', 'N', 'D', 'Winding', 'Road']
Tetapi sebagian besar waktu kita memisahkan kalimat menjadi huruf besar, biasanya kita ingin mempertahankan singkatan yang biasanya merupakan aliran huruf besar yang berkelanjutan. Kode di bawah ini akan membantu.
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']
Terima kasih.