第一次发生分裂

在第一次出现分隔符时分割字符串的最佳方法是什么?

例如:

"123mango abcd mango kiwi peach"

在第一个mango上进行分裂来获得:

"abcd mango kiwi peach"
418469 次浏览
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'

的文档:

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

返回字符串中的单词列表,使用9月作为分隔符字符串。如果给出了maxsplit,则最多进行maxsplit次拆分(因此,列表将最多有maxsplit+1个元素)。

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

对我来说,更好的方法是:

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

...因为如果发生的事件不在字符串中,你会得到"IndexError: list index out of range"

因此,-1将不会受到任何伤害,因为发生的次数已经设置为1。

df.columnname[1].split('.', 1)

这将在'第一次出现时分割数据。'在字符串或数据帧列值中。

你也可以使用str.partition:

>>> text = "123mango abcd mango kiwi peach"


>>> text.partition("mango")
('123', 'mango', ' abcd mango kiwi peach')


>>> text.partition("mango")[-1]
' abcd mango kiwi peach'


>>> text.partition("mango")[-1].lstrip()  # if whitespace strip-ing is needed
'abcd mango kiwi peach'

使用str.partition的好处是它总是会返回一个这样的元组:

(<pre>, <separator>, <post>)

因此,这使得解包输出非常灵活,因为结果元组中有总是将有3个元素。