2013-04-24 45 views
3

我怎麼能包括delimetr到re.split結果?re.split和分隔符到結果

例如,我有文字

Bla bla lbaa dsad asd as. Asd qe as! ASDadf asd! Dsss dwq. Dkmef? 

RegExr

re.split('\s*([\.!\?]+)\s*', data) 

而且re.split回報這個

['Bla bla lbaa dsad asd as', '.', 'Asd qe as', '!', 'ASDadf asd', '!', 'Dsss dwq', '.', 'Dkmef', '?', ''] 

雖然我想這

['Bla bla lbaa dsad asd as.', 'Asd qe as!', 'ASDadf asd!', 'Dsss dwq.'] 

我怎麼能沒有尖峯呢?

In [9]: re.split(r'(?<=[\.!\?])\s+', data) 
Out[9]: 
['Bla bla lbaa dsad asd as.', 
'Asd qe as!', 
' ASDadf asd!', 
'Dsss dwq.', 
'Dkmef?'] 

說明從documentation for the re module

感謝

回答

4

您可以通過空格通過punctuaction之前嘗試拆分

(?<=...)

匹配,如果字符串中的當前位置之前是匹配... 結束於當前位置。這被稱爲積極向後看 斷言。 (?<=abc)def將在abcdef中找到匹配項,因爲後視將 備份3個字符並檢查包含的模式是否匹配。 包含的模式只能匹配某些固定長度的字符串,這意味着允許使用 abca|b,但a*a{3,4}不是。

+0

Bah,誤讀了這個問題。 :-P – 2013-04-24 20:00:20

+0

新聞發佈:)Впринципе,тактожеможносделать。 Спасибо,Павел。 – 2013-04-24 20:08:08

+0

現在用英文,爲我們其餘的;) – 2013-04-24 20:09:53