在第一次出现分隔符时分割字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
在第一个mango上进行分裂来获得:
mango
"abcd mango kiwi peach"
>>> 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个元素)。
str.split([sep[, maxsplit]])
返回字符串中的单词列表,使用9月作为分隔符字符串。如果给出了maxsplit,则最多进行maxsplit次拆分(因此,列表将最多有maxsplit+1个元素)。
maxsplit+1
s.split('mango', 1)[1]
对我来说,更好的方法是:
s.split('mango', 1)[-1]
...因为如果发生的事件不在字符串中,你会得到"IndexError: list index out of range"。
IndexError: list index out of range"
因此,-1将不会受到任何伤害,因为发生的次数已经设置为1。
-1
df.columnname[1].split('.', 1)
这将在'第一次出现时分割数据。'在字符串或数据帧列值中。
你也可以使用str.partition:
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个元素。