2011-06-07 107 views
33

從文本塊中切出最後一個單詞的最佳方式是什麼?Python:切斷句子的最後一個單詞?

我能想到它

  1. 斯普利特的列表(按空格),並刪除最後一個項目,然後reconcatenating列表。
  2. 使用正則表達式替換最後一個單詞。

我目前錄取辦法#1,但我不知道如何連接列表...

content = content[position-1:position+249] # Content 
words = string.split(content, ' ') 
words = words[len[words] -1] # Cut of the last word 

任何代碼示例大加讚賞。

回答

105

其實你不需要拆分所有單詞。您可以使用rsplit將最後一個空格符號的文字分爲兩部分。

一些示例:

>>> text = 'Python: Cut of the last word of a sentence?' 
>>> text.rsplit(' ', 1)[0] 
'Python: Cut of the last word of a' 

rsplit是「反向分割」的簡寫,而不像從字符串的結尾經常split作品。第二個參數是要分割的最大數量 - 例如值1會給你兩個元素的列表(因爲有一個單獨的分割,導致了兩個輸入字符串)。

+2

與一些其他的答案,如果覺得有必要要注意rsplit是反向分割(不是正則表達式分割),1是maxsplit。 – 2016-06-30 16:36:31

+1

@ duckman_1991好點 - 延長了答案。 – 2018-01-16 17:14:57

2

' '.join(words)將列表重新放在一起。

4

如果要保留當前的方法,請使用' '.join(words)連接列表。

您也可能想用words = words[:-1]替換words = words[len[words -1]以利用列表切片。

7

你應該明確地拆分,然後刪除最後一個詞,因爲正則表達式會有更多的複雜性和不必要的開銷。您可以使用更Python代碼(假設的內容是一個字符串):

' '.join(content.split(' ')[:-1]) 

此拆分成的內容的話,通吃但最後一個字,並重新加入與空間的話。

5

如果你喜歡緊湊:

' '.join(content.split(' ')[:-1]) + ' ...' 
3

OR

import re 

print ' '.join(re.findall(r'\b\w+\b', text)[:-1]) 
+0

我想這個正則表達式會給你帶來好處,當你的單詞不僅被空白分割時。否則rsplit是你的選擇。 – 2011-06-07 14:52:47

0

獲取的空間最後一個索引和拼接字符串

>>> text = 'Python: Cut of the last word of a sentence?' 
>>> text[:text.rfind(' ')] 
'Python: Cut of the last word of a' 
相關問題