2014-07-08 39 views
0

我又試圖找出如何分割Python中的字符串,它具有以下類型格式的結尾:在單詞開始的正則表達式分裂性格

'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr' 

爲以下列表項:

'aaaa bbbb' 
'cccc:dd' 
'eeee:ff ggg hhhh' 
'iiii:jjjj' 
'kkkk: 
'llll:mm' 
'nnn:ooo pppp' 
'qqqq:rrr' 

我期待在以冒號結尾的單詞開始分裂(「:」)

任何建議,將不勝感激:)

+0

'我期待在以冒號結尾的單詞開始分裂(「:」)'對我來說,似乎都不清楚。 –

+0

感謝您提高發布的可讀性:-)我希望這個例子能夠證明我正在尋找的東西,即我希望每個提取的元素都以一個以冒號結尾的單詞開頭,並且包含所有單詞直到另一個單詞檢測到以冒號結尾的詞。希望這可以幫助? – logoverflow

+0

爲什麼'kkkk:'是一個異常? – hjpotter92

回答

0

爲提供例如以下工作:

import re 

string = 'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr' 
result = [] 

# split the string at each word followed by a colon 
# wrap regex pattern as group so it is added to result list 
parts = re.split("(\w+:)", string) 

# if anything was previous to first delimitation token 
# add it to results 
if parts[0]: 
    result.append(parts[0].strip()) 

# create pairs of a delimitation token and next string 
# start from first delimitation token (list index 1) 
groups = zip(*[parts[i+1::2] for i in range(2)]) 

# join each pair to one string and strip spacing 
result.extend(["".join(group).strip() for group in groups]) 

print(result) 
+0

非常感謝您的快速回復。它工作得很好,正是我所需要的。再次感謝:-D – logoverflow

+0

很高興聽到,我清理了一下代碼,使其更容易理解,並希望對其他人更有幫助。 – galinden