2011-08-01 103 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' 
相关问题