在 Python 字符串中的最后一个分隔符上拆分?

Posted

技术标签:

【中文标题】在 Python 字符串中的最后一个分隔符上拆分?【英文标题】:Splitting on last delimiter in Python string? 【发布时间】:2013-02-07 08:46:11 【问题描述】:

在字符串中 last 出现的分隔符处拆分字符串的推荐 Python 习语是什么?示例:

# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']

# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']

mysplit 采用第二个参数,即要拆分的分隔符的出现。与常规列表索引一样,-1 表示最后一个。如何做到这一点?

【问题讨论】:

【参考方案1】:

我这样做只是为了好玩

    >>> s = 'a,b,c,d'
    >>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
    ['a,b,c', 'd']

警告:请参阅下面的第一条评论,此答案可能会出错。

【讨论】:

'只是为了好玩'但也非常错误,因为如果分隔符不只是单个字符或重复字符,您的拆分最多会选择错误的拆分点。跨度> 【参考方案2】:

你可以使用 rsplit

string.rsplit('delimeter',1)[1]

从反向获取字符串。

【讨论】:

【参考方案3】:

请改用.rsplit().rpartition()

s.rsplit(',', 1)
s.rpartition(',')

str.rsplit() 允许您指定拆分多少次,而str.rpartition() 只拆分一次但始终返回固定数量的元素(前缀、分隔符和后缀),并且对于单个拆分情况更快。

演示:

>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')

这两种方法都从字符串的右侧开始拆分;通过给 str.rsplit() 一个最大值作为第二个参数,您可以只拆分最右边的事件。

【讨论】:

以上是关于在 Python 字符串中的最后一个分隔符上拆分?的主要内容,如果未能解决你的问题,请参考以下文章

仅当分隔符存在于字符串上时,才使用两个不同的分隔符拆分 Python 字典中的字符串

字符串入门十八讲合集四

字符串入门十八讲合集四

拆分字符串并获取最后一个元素

4-1如何拆分含有多个分隔符的字符串

在python中用分隔符拆分一个字符串