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

2024-09-28 18:56:46 发布

您现在位置:Python中文网/ 问答频道 /正文

建议使用什么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表示从末尾开始的最后一个。怎么能做到?


Tags: of字符串in示例onlyon建议split
3条回答

请改用^{}^{}

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()的最大值作为第二个参数,您可以只拆分最右侧的匹配项。

我这么做只是为了好玩

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

你可以用rsplit

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

把绳子从反面取下来。

相关问题 更多 >