แทนที่ตัวอักษรตัวพิมพ์ใหญ่ 'L' ทุกตัวในช่องที่กำหนดด้วยช่องว่างพร้อมตัวอักษร "L" เราสามารถทำได้โดยใช้ list comp understandion หรือเราสามารถกำหนด function ให้ทำได้ดังนี้
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']
หากคุณเลือกที่จะไปตามฟังก์ชันนี่คือวิธีการ
def splitAtUpperCase(text):
result = ""
for char in text:
if char.isupper():
result += " " + char
else:
result += char
return result.split()
ในกรณีของตัวอย่างที่กำหนด:
print(splitAtUpperCase('TheLongAndWindingRoad'))
>>>['The', 'Long', 'A', 'N', 'D', 'Winding', 'Road']
แต่ส่วนใหญ่แล้วเวลาที่เราแยกประโยคด้วยตัวอักษรตัวพิมพ์ใหญ่มักจะเป็นกรณีที่เราต้องการคงคำย่อที่มักจะเป็นตัวอักษรตัวพิมพ์ใหญ่ที่ต่อเนื่องกัน รหัสด้านล่างจะช่วยได้
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']
ขอบคุณ.