【发布时间】:2011-10-17 17:29:09
【问题描述】:
在第一次出现分隔符时拆分字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
拆分第一个mango 得到:
"abcd mango kiwi peach"
【问题讨论】:
-
记住
first, *rest = my_list存在
在第一次出现分隔符时拆分字符串的最佳方法是什么?
例如:
"123mango abcd mango kiwi peach"
拆分第一个mango 得到:
"abcd mango kiwi peach"
【问题讨论】:
first, *rest = my_list存在
df.columnname[1].split('.', 1)
这将使用第一次出现的 '.' 拆分数据。在字符串或数据框列值中。
【讨论】:
df["column_name"].str.split('.', 1) Docs:pandas.pydata.org/pandas-docs/stable/reference/api/…
你也可以使用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 个元素。
【讨论】:
key, _, value = text_line.partition(' ')
key, value = text_line.partition(' ')[::2]
来自the docs:
str.split([<i>sep</i>[, <i>maxsplit</i>]])返回字符串中的单词列表,使用 sep 作为分隔符字符串。如果给出 maxsplit,则最多完成 maxsplit 个拆分(因此,列表最多有
maxsplit+1个元素)。
s.split('mango', 1)[1]
【讨论】:
maxsplit 计数后可以执行更多拆分,则列表中的最后一个元素将包含字符串的其余部分(包括任何sep 字符/字符串)。
对我来说更好的方法是:
s.split('mango', 1)[-1]
...因为如果发生的情况不在字符串中,您将得到“IndexError: list index out of range".
因此,-1 不会受到任何伤害,因为出现次数已设置为 1。
【讨论】:
>>> s = "123mango abcd mango kiwi peach"
>>> s.split("mango", 1)
['123', ' abcd mango kiwi peach']
>>> s.split("mango", 1)[1]
' abcd mango kiwi peach'
【讨论】:
"value" parameter must be a scalar or dict, but you passed a "list"我用s.split("mango", 1)[1]返回了这个