【问题标题】:Splitting on last delimiter in Python string?在 Python 字符串中的最后一个分隔符上拆分?
【发布时间】: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 表示最后一个。如何做到这一点?

【问题讨论】:

    标签: python string list parsing split


    【解决方案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() 一个最大值作为第二个参数,您可以只拆分最右边的事件。

      【讨论】:

        猜你喜欢
        • 2017-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        • 2019-02-06
        • 2019-08-21
        • 2023-03-08
        相关资源
        最近更新 更多