2013-11-23 76 views
1

我有這樣的文字:找出句子所需要的正則表達式的幫助

「馬克

無論句子
無論句子2

馬特

無論句子3
無論句子4

卡羅爾

無論句子5
無論句子6"

我希望能夠識別每個句子(然後列出每個句子的列表)。我怎樣才能以簡單的方式做到這一點?

馬克,馬特和卡羅爾是否被識別並隨後添加到列表中並不重要,因爲這些名稱總是相同,但句子可能不同。

我已經試過了一點,但我無法弄清楚如何處理空行...

任何幫助,將不勝感激,即使它只是一個指針來領導我在正確的方向..

+0

你如何區分一個句子和一個名字?你能給出一個更具體的例子和你的預期輸出(匹配)嗎?你究竟試過了什麼? – slhck

+0

@slhck OP沒有(我認爲)。 「馬克,馬特和卡羅爾是否被識別並不重要;) – elslooo

回答

1

如果所有句子以新行結束了,你可以使用這個(很簡單)的正則表達式:

/([^\n]+)/ 

提示:你可以使用http://rubular.com/來測試你的正則表達式。

+0

謝謝,我會在需要時使用它。不知道我會走哪條路,但這可能會在以後得到方便。 – user3024863

2

在Python中,你不需要一個正則表達式。

只需使用splitlines

>>> text = """Mark 

Whatever sentence 
Whatever sentence 2 

Matt 

Whatever sentence 3 
Whatever sentence 4 

Carol 

Whatever sentence 5 
Whatever sentence 6""" 
>>> sentences = text.splitlines() 
>>> sentences 
['Mark', '', 'Whatever sentence', 'Whatever sentence 2', '', 'Matt', '', 'Whatever sentence 3', 'Whatever sentence 4', '', 'Carol', '', 'Whatever sentence 5', 'Whatever sentence 6'] 

然後filter掉所有空行:

>>> sentences = list(filter(None, sentences)) 
>>> sentences 
['Mark', 'Whatever sentence', 'Whatever sentence 2', 'Matt', 'Whatever sentence 3', 'Whatever sentence 4', 'Carol', 'Whatever sentence 5', 'Whatever sentence 6'] 

如果「讓每個句子的名單」,你的意思是分裂的每個句子翻譯成的話,你可以這樣做:

>>> sentences = [sentence.split() for sentence in sentences] 
>>> sentences 
[['Mark'], ['Whatever', 'sentence'], ['Whatever', 'sentence', '2'], ['Matt'], ['Whatever', 'sentence', '3'], ['Whatever', 'sentence', '4'], ['Carol'], ['Whatever', 'sentence', '5'], ['Whatever', 'sentence', '6']] 
+1

我期待得到某種答案,但不是這麼快,絕對不是這個屁股! 謝謝你,我會試試看! – user3024863

+0

答案我正要發佈!你應該精確的說,使用''list(filter(...))'',代碼是在Python 3中,不是嗎? – eyquem

+2

@ user3024863然後你應該點擊在seeneyrod的答案左邊的'upvote button - points - downvote button'系列下的「支架」,接受它 – eyquem