2011-01-30 134 views
7

我有這樣的輸入字符串:a1b2c30d40,我想將字符串標記爲:a, 1, b, 2, c, 30, d, 40Python的字符串拆分

我知道我可以一個接一個讀取每個字符並跟蹤前一個字符以確定是否應該對它進行標記(連續兩個數字表示不會標記它),但是是否存在更多pythonic方式這樣做?

回答

13
>>> re.split(r'(\d+)', 'a1b2c30d40') 
['a', '1', 'b', '2', 'c', '30', 'd', '40', ''] 

在模式:作爲評論說,\d手段「匹配一個數字」,+是修飾語,意思是「匹配一個或多個」,所以\d+手段「匹配儘可能多的數字越好」。這被放到一個組()中,所以re.split的整個模式意味着「使用盡可能多的數字來分割這個字符串作爲分隔符,另外捕獲匹配的分隔符到結果中」。如果你忽略了這個組,你會得到['a', 'b', 'c', 'd', '']

+0

嗯我不明白正則表達式很好。你介意解釋(\ d +)模式嗎? – Hery 2011-01-30 16:11:04