2014-01-09 69 views

回答

1

我有兩個解決方案。

首先使用更多的內存:

s = "Lorem ipsum foo bar foobar stuff etc" 
print ' '.join(s.split(" ")[:4]) 

第二可能較慢:

s = "Lorem ipsum foo bar foobar stuff etc" 
start = 0 
for i in range(4): # number of words 
    start = s.find(" ", start+1) 
print s[:start] 
+0

感謝您使用您的第一個解決方案 – Dap

2

如果你只希望他們用空格分隔,則:

>>>s = "Lorem ipsum foo bar foobar stuff etc" 
>>>o = ' '.join(s.split(' ')[:4]) 
"Lorem ipsum foo bar" 

應該做的伎倆。

這是非常天真的,如果你需要更好的東西,然後regex是要走的路。通過一些票友,我指的不是空格,標點符號語法更定界符等

例如:

>>>import re 
>>>s = "Lorem ipsum foo bar foobar stuff etc" 
>>>l = re.split('[\n \r \s \t]', s) 
['Lorem', 'ipsum', 'foo', 'bar'] 
>>>str.join(' ', l) 
"Lorem ipsum foo bar" 

希望這有助於!

+0

如果他們伴隨觀察,下降的結果會更有建設性:)謝謝! –

+1

你認爲你的代碼真的有效嗎?在發帖之前請[運行](http://ideone.com/RiFwPW)您的代碼 – Abhijit

+0

@Abhijit感謝您的支持。只是修復它。 –

2

@ PauloBlu的答案在大多數情況下會的工作,當你的段落包含不均勻空格的話,除了。 正則表達式可以而使用str.split + str.join可能無法爲您提供正確的結果

>>> ' '.join(s.split(' ')[:4]) 
'Lorem ipsum\tfoo ' 
1

除了其他的答案,你也可以使用這種形式在這種情況下

>>> s = "Lorem ipsum\tfoo bar foobar stuff etc" 
>>> ''.join(re.findall("^[^\s]+|\s+[^\s]+", s)[:4]) 
'Lorem ipsum\tfoo bar' 

工作的奇蹟。它沒有那麼不同,但它的工作原理如下:

s = "Lorem ipsum foo bar foobar stuff etc" 

print ' '.join(s.split(' ', 4)[:-1]) 
# the maxsplit arg of split('4' here) could be set to any number 'n' 

"Lorem ipsum foo bar" 
相關問題