2014-10-29 65 views
-2
def split(string,x): 
    if string == "": 
     return "" 
    if string[0] == x : 
     return split(string[1:],x) 
    return string[0]+[split(string[1:],x)] 

我想給這個FUNC像「ballooolam」和「l」的字符串,我想這FUNC給我[「BA」,「OOO 「,」am「] 3天我在想它蟒蛇2.7.8 delimiter.how串的德爾AA信

+2

爲什麼不使用string.split('l')?????或者,這是一個練習 – 2014-10-29 13:28:26

+0

差不多它是雖然想以這種方式解決問題很好 – 2014-10-29 13:30:37

+0

對不起,我不明白你的意思。 – 2014-10-29 13:37:44

回答

0

在python中分割字符的正確方法是使用split內建函數。這將是比任何你在Python原生實現,因爲它是一個編譯的C擴展,因爲在這一點上都內建更快:

lst = "ballooolam".split("l") 

然而,在本question討論,這可能不是相當做你的期望。 split當存在零長度的標記時,在列表中留下空字符串; I.E.如果分隔符位於字符串中的第一個/最後一個位置,或者兩個分隔符相鄰。這樣做word = 'l'.join(lst)將返回原始值;沒有空字符串,你會得到'balooolam'而不是'ballooolam'。如果你想刪除這些空字符串,你可以用一個列表理解很容易地做到這一點:

def splitter(string, x): 
    return [token for token in string.split(x) if token] 

if token將拒絕任何字符串,它是「falsy」,其中空字符串。如果您也想從最終名單中排除的空格,只有字符串,你可以做一個小的調整:

def splitter(string, x): 
    return [token for token in string.split(x) if token.strip()] 

strip()從字符串中刪除任何前導/尾隨空白。在只有空格的字符串的情況下,這將導致一個空字符串,然後將是虛假的。