在第一次出现分隔符时拆分字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
拆分第一个mango
以获取:
"abcd mango kiwi peach"
答案 0 :(得分:413)
来自the docs:
str.split([sep[, maxsplit]])
使用 sep 作为分隔符字符串,返回字符串中的单词列表。如果给出 maxsplit ,则最多 maxsplit 分割完成(因此,列表最多只有
maxsplit+1
个元素。)
s.split('mango', 1)[1]
答案 1 :(得分:60)
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'
答案 2 :(得分:22)
对我而言,更好的方法是:
s.split('mango', 1)[-1]
...因为如果发生该事件不在字符串中,您将获得“IndexError: list index out of range"
。
因此-1
不会造成任何伤害,因为已经将出现次数设置为1。
答案 3 :(得分:2)
您也可以使用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个元素。
答案 4 :(得分:0)
df.columnname[1].split('.', 1)
这将以第一次出现的“。”分割数据。在字符串或数据框列值中。