2011-08-01 141 views
183

在第一次出現分隔符時分割出一個字符串的最佳方式是什麼?第一次出現分割

例如:第一mango

"123mango abcd mango kiwi peach" 

拆分獲得:

"abcd mango kiwi peach" 
+0

什麼是分隔符?你說你在分手,但第一部分在哪裏?你的例子根本不清楚! – GaretJax

+1

對不起,忘了提及分隔符! – Acorn

回答

287

the docs

str.split([sep[, maxsplit]])

返回字符串中單詞的列表,使用sep作爲分隔符字符串。如果給出maxsplit,則最多分割完成(因此,該列表最多將具有maxsplit+1元素)。

s.split('mango', 1)[1] 
44
>>> s = "123mango abcd mango kiwi peach" 
>>> s.split("mango", 1) 
['123', ' abcd mango kiwi peach'] 
>>> s.split("mango", 1)[1] 
' abcd mango kiwi peach' 
+0

這假設分隔符錯誤。 – Swiss

+4

@Swiss:那又如何?技術仍然是一樣的。 –

+4

@Ignacio:我只是把它指出來。沒有理由有一個部分正確的答案,而不是完全正確的答案。 – Swiss

17

對我來說,更好的辦法是:

s.split('mango', 1)[-1] 

...因爲如果碰巧發生是不是字符串中你會得到「IndexError: list index out of range"

因此-1。不會受到任何傷害,因爲事件的發生次數已經設定爲1

+0

'mango'後'1'的含義是什麼? – FaCoffee

+0

正如之前所寫,它是正在應用split()方法的事件的數量。方法將只查找並應用第一個「芒果」字符串。 – Alex

0

這是一個itertools方法:

s = "123mango abcd mango kiwi peach" 
"".join(it.islice(it.dropwhile(lambda x: x != " ", s), 1, None)) 
#'abcd mango kiwi peach' 
相關問題